按照官方提供的文档:http://laravelacademy.org/post/7812.html
1.创建中间件:先声明中间件,
php artisan make:middleware AdminMiddleware
会自动在app/Http/Middleware 文件夹下生成 AdminMiddleware的中间件文件:如下
namespace App\Http\Middleware; use Closure; use Auth; class AdminMiddleware { /** * 声明中间件,验证逻辑可以根据自己需求写 * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { //中间件处理是否需要登录权限 if( !Auth::guard('admin')->check()){ return redirect('/admin/login'); } return $next($request); } }
2.然后绑定到app/Http/Kernel.php 文件中添加,如果需要使用路由中间件,就加载到
protected $routeMiddleware = [ //添加中间件 'admin.auth'=> AdminMiddleware::class, 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ];
3.再输入该路由调用时,必须把AdminMiddleware的命名空间写上,不然会报错,造成无法使用
解决方法:就是在app/Http/Kernel.php该文件中加上
namespace App\Http; use App\Http\Middleware\AdminMiddleware; //引入新建的中间件的方法
在控制器中调用中间件
public function __construct(){ //执行中间件,验证是否登录 ,排除loginForm,login两个不需要验证的方法 $this->middleware('admin.auth')->except(['loginForm','login']); }