Laravel卫队登录

时间:2019-05-13 11:52:38

标签: laravel

我为管理员用户使用自定义登录名感到有些困惑。

我倾向于为管理员使用另一个模型,只是为了确保所有内容都分开。我确实看到了很多例子来保护登录。因此,看了一些教程并阅读了一些文章,我就去尝试了,陷入了困境。

为了我的管理员,我做了第二个后卫。

 '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')

时出了点问题

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用auth()->guard('admin')。希望对您有帮助

答案 1 :(得分:0)

好吧,我有点讨厌自己和所有可能的文档。确实有效。 但是,要获取已登录的用户,您还应该指定防护对象。

如果您使用这样的守护者登录:

Auth::guard('admin')->attempt($request->only('email', 'password'));

您还应该像这样用守卫来检索用户:

Auth::guard('admin')->user()

facepalm