使用 2 个不同的表进行登录身份验证

elg*_*chu 6 laravel laravel-authentication laravel-8

我的 laravel 8 身份验证登录表单运行良好,但我需要为不同类型的用户创建一个新的身份验证系统,这些用户使用自己的用户名和密码存储在数据库中的另一个表中。我怎样才能做到这一点?

小智 14

您可以通过在“config/auth.php”中添加新的守卫来使用 Guard 来完成此操作。

'guards' => [
     'web' => [
          'driver' => 'session',
          'provider' => 'users',
      ],

      'admin' => [
          'driver' => 'session',
          'provider' => 'admin_users',
      ],
 ],

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

      'admin_users' => [
          'driver' => 'eloquent',
          'model' => App\Models\Admin\AdminUser::class,
      ],
  ],
Run Code Online (Sandbox Code Playgroud)

在这里我创建了一个新的 Auth Guard“admin”。使用此防护,您可以尝试从不同的表登录。

对于登录尝试: 对于用户:

if (Auth::guard('web')->attempt(['email' => $request->email, 'password' => 
    $request->password], $request->remember)) {
    return redirect()->intended(route('home'));
 }
Run Code Online (Sandbox Code Playgroud)

对于管理员:

if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => 
   $request->password], $request->remember)) {
   return redirect()->intended(route('admin.dashboard'));
}
Run Code Online (Sandbox Code Playgroud)