Laravel 多重身份验证::尝试

Pho*_*ton 2 authentication login-attempts laravel

我的 laravel v5.4 项目中有两个模型,user 和 admin。

在 config/auth.php 中,我将 admin 添加到守卫和提供程序中,如下所示:

'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,
    ],
],
Run Code Online (Sandbox Code Playgroud)

现在在 AdminController 类中我想使用 Auth::attempt 函数,但默认情况下它使用用户表。我可以更改 config/auth.php 中的默认值,如下所示,它可以工作,但在这种情况下,我无法对用户使用 Auth::attempt 。

'defaults' => [
    'guard' => 'admin',
    'passwords' => 'users',
],
Run Code Online (Sandbox Code Playgroud)

我想将用户设置为默认值,但使用 Auth::attempt 函数进行管理,方法如下: Auth::attempt('admin',[credentials])。我如何使用 Auth::attempt 管理模型?

Ohg*_*why 5

你直接打电话给警卫,就像这样:

Auth::guard('admin')->attempt($credentials);
Run Code Online (Sandbox Code Playgroud)

或者与助手一起:

auth()->guard('admin')->attempt($credentials);
Run Code Online (Sandbox Code Playgroud)

或者,使用助手甚至更短:

auth('admin')->attempt($credentials);
Run Code Online (Sandbox Code Playgroud)