【问题标题】:Laravel Multiple Auth::attemptLaravel 多重身份验证::尝试
【发布时间】: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 模型?

【问题讨论】:

    标签: laravel authentication login-attempts


    【解决方案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 不,因为您使用令牌进行身份验证。
    • 哦,好的。那么如果我仍然想对该警卫使用身份验证尝试,解决方法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2014-07-05
    • 2018-07-21
    • 2018-10-17
    • 2013-07-31
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多