Laravel 多重身份验证::尝试
Posted
技术标签:
【中文标题】Laravel 多重身份验证::尝试【英文标题】:Laravel Multiple Auth::attempt 【发布时间】:2018-01-17 00:45:43 【问题描述】:我的 laravel v5.4 项目中有两个模型,用户和管理员。
在 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\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
现在在 AdminController 类中,我想使用 Auth::attempt 函数,但默认情况下它使用 users 表。我可以更改 config/auth.php 中的默认值,如下所示,它可以工作,但在这种情况下,我不能为用户使用 Auth::attempt。
'defaults' => [
'guard' => 'admin',
'passwords' => 'users',
],
我想将用户设置为默认用户,但对管理员使用 Auth::attempt 函数,方法是 Auth::attempt('admin',[credentials])。我如何将 Auth::attempt 用于 Admin 模型?
【问题讨论】:
【参考方案1】:你直接打电话给守卫,像这样:
Auth::guard('admin')->attempt($credentials);
或者使用助手:
auth()->guard('admin')->attempt($credentials);
或者,使用助手甚至更短:
auth('admin')->attempt($credentials);
【讨论】:
如果管理员保护驱动程序使用passport
而不是session
,这仍然有效吗?我得到了Method Illuminate\Auth\RequestGuard::attempt does not exist.
@ultrasamad 不,因为您使用令牌进行身份验证。
哦,好的。那么如果我仍然想对该警卫使用身份验证尝试,解决方法是什么?以上是关于Laravel 多重身份验证::尝试的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.2 中使用多重身份验证 [关闭]
Laravel - 具有多重身份验证的未经身份验证的重定向问题
Laravel 8 使用 Guards Rest Password 的多重身份验证问题