Laravel Auth仅验证管理员/超级用户

rol*_*lfk 6 php authorization laravel laravel-5

我在Windows开发机器上使用Laravel 5.我想在整个应用程序中自定义和使用Auth中间件,以维护身份验证.我的用例是标准用例.有两个(或三个)类用户 - 管理员常规(常规用户不是管理员).

Admin具有后端管理的明显作用,因此具有单独的路由组/ admin /,它应该将未记录的用户重定向到/ admin/login.我已经这样设置了..

Route::group(['middleware'=>'auth', 'prefix' => 'admin'], function() {
  Route::get('login','App\AuthController@getLogin');
  Route::post('login','App\AuthController@postLogin');
});
Run Code Online (Sandbox Code Playgroud)

发布登录表单时,如何让Auth添加过滤器

  • 要么只从那些'is_admin'为真的用户中验证
  • 或者要求它首先加入User和UserRoles表,以仅识别具有Admin角色的用户?

Mar*_*ala 6

我建议您定义另一个中间件,用于检测用户是否为admin而不是修改auth.现在将另一个中间件添加到只有管理员才能访问的路由中.

添加几个中间件来这样路由

Route::group(['middleware' => ['auth','admin']], function() {
Run Code Online (Sandbox Code Playgroud)

中间件看起来像

public function handle($request, Closure $next) {
  if (Auth::user()->role == "admin") {
    return $next($request);
  } else {
    return redirect("/")->withMyerror("You are not authorized for this action");
  }
}
Run Code Online (Sandbox Code Playgroud)