如何在一个单一的登录表单中创建多重身份验证

时间:2019-01-30 06:07:47

标签: laravel

我想创建一个身份验证系统(一种形式),使管理员和学生能够访问不同的界面,管理员可以访问控制面板,而用户可以访问主系统。另外,我想在数据库中使用单独的表,一个用于管理员,另一个用于学生。有没有办法做到这一点?请提供任何建议以及如何做。

谢谢...

1 个答案:

答案 0 :(得分:0)

您需要更改中间件文件夹中的redirectifauthenticated.php文件。

我以后可以编辑答案,我现在无法访问我的代码。但是这个想法行得通:

在handle函数中:

          switch ($guard){
          case 'admin':
            if (Auth::guard($guard)->check()){
//if you are using some role package, use with auth()->user()->hasrole('admin'), depends //your package
              return redirect()->route('adminurl');
            }
            break;
          default:
            if (Auth::guard($guard)->check()){
                return redirect('/homepage');
            }
            break;
        }
        return $next($request);

在config / auth.php中,您还需要向guards部分添加admin guard。对于提供商来说也是一样。

这对于提供者:

       'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\AdminModel::class,
        ],
        ]