我为管理员用户使用自定义登录名感到有些困惑。
我倾向于为管理员使用另一个模型,只是为了确保所有内容都分开。我确实看到了很多例子来保护登录。因此,看了一些教程并阅读了一些文章,我就去尝试了,陷入了困境。
为了我的管理员,我做了第二个后卫。
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
//'hash' => false,
],
],
使用提供程序:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Users\Admin::class,
]
]
是的,我的管理员模型位于命名空间App \ Models \ Users;
在登录控制器中,我进行了更改:
Auth::attempt($request->only('email', 'password'));
收件人:
Auth::guard('admin')->attempt($request->only('email', 'password'));
在没有防护的情况下,它可以正常工作/获得用户模型的身份验证。但是我希望管理员能够工作以获取管理员模型。
现在,什么都没发生。不是错误或Auth用户。
这里有人看到我在做什么错吗?
P.S。我已经大量清除了config:cache等。
更新:
当我将默认的Gaurd更改为“ admin”并在未指定防护的情况下登录。我得到了一个管理员模型。所以当我使用Auth::guard('admin')
答案 0 :(得分:0)
您是否尝试过使用auth()->guard('admin')
。希望对您有帮助
答案 1 :(得分:0)
好吧,我有点讨厌自己和所有可能的文档。确实有效。 但是,要获取已登录的用户,您还应该指定防护对象。
如果您使用这样的守护者登录:
Auth::guard('admin')->attempt($request->only('email', 'password'));
您还应该像这样用守卫来检索用户:
Auth::guard('admin')->user()
facepalm