在我的Laravel应用程序中,我正在使用名为admin
的附加防护,它具有自己的模型和数据库表。
我在 /config/auth.php
中定义它'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 15,
],
],
然后,我基本上将所有内容从 http / controllers / auth 复制到 http / controllers / auth / admin 。特别是LoginController,ForgotPasswordController和ResetPasswordController。
然后,我重写必要的方法以将防护用作Auth::guard('admin');
现在,除了一件事情外,一切都按预期工作:作为管理员,如果我在登录表单上勾选“记住我”,它将生成一个令牌,如下所示:
如您所见,remember令牌也引用了警卫,如果我要使用普通的auth警卫进行登录,它的内容将类似于_web_
有趣的是,当我注销时发生重定向,但是记住令牌仍然存在,用户不会发生这种情况。
以下是使用网络防护的用户记住令牌的示例:
我可以看到LoginController在此行中使用AuthenticatesUses:
use AuthenticatesUsers;
以下是我在LoginController中重写的受保护方法,如下所示:
/**
* Define the guard to use for the Authenticated users trait, in this case admin
*
* @return void
*/
protected function guard()
{
return Auth::guard('admin');
}
正如您所看到的,我相信我已经完成了应做的所有事情,但是我看不到任何实际可以清除牢记令牌的地方。