我在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');
});

发布登录表单后,我如何要求Auth 添加过滤器
  • 还是仅从'is_admin'为真的那些用户中验证
  • 还是要求它首先加入User和UserRoles表以仅标识具有管理员角色的用户?
  • 最佳答案

    我建议您定义另一种中间件,以检测用户是否为管理员,而不用修改身份验证。现在,将此另一种中间件添加到只有管理员才能访问的路由中。

    添加几个中间件来路由

    Route::group(['middleware' => ['auth','admin']], function() {
    

    中间件看起来像
    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");
      }
    }
    

    关于php - Laravel Auth仅验证管理员/ super 用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29842660/

    10-14 17:21
    查看更多