2017-07-25 119 views
2

目前添加验证我在路由文件中使用此:Laravel中间件认证

Route::middleware(['auth'])->group(function() { 
}); 

但我想还需要检查不同的路线,如果用户是管理员,所以现在我做到这一点,有一个自定义中间件文件:

Route::middleware(['auth', 'admin'])->group(function() { 
}); 

//

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Admin { 

    public function handle($request, Closure $next) 
    { 

     if (Auth::check() && Auth::user()->isAdmin()) 
     { 
      return $next($request); 
     } 

     return redirect('dashboard'); 

    } 

} 

这一切工作正常,但我采用t注意到他API中间件,它使用这样的:

Route::middleware('auth:api')->get('/user', function (Request $request) { 
    return $request->user(); 
}); 

问题

  1. 如何我可以做一个命名空间的权威性中间件,如API一个'auth:admin'
  2. 哪里文件位于该设置'auth:api'中间件,我找不到它在应用程序文件夹中的任何地方
  3. 是否有任何其他方式来执行多个身份验证,如编辑文件config/auth.php然后分离两个表之间的用户,一个用于管理员,另一个用于其他用户。

回答

0

auth中间件接受一个参数,它是要使用的警卫。正如你在Illuminate\Auth\Middleware\Authenticate中看到的那样。您可以添加custom auth guards。所以你可以创建auth:admin如果你愿意。但我确实认为使用一个中间件来验证用户是谁(身份验证)而另一个用来验证用户是否被允许访问他/她想访问的页面(授权)是完全正确的。