LARAVEL:一个身份验证守卫的多个驱动程序

Posted

技术标签:

【中文标题】LARAVEL:一个身份验证守卫的多个驱动程序【英文标题】:LARAVEL: Multiple drivers for one auth guard 【发布时间】:2020-05-25 10:03:11 【问题描述】:

我正在尝试在我的 Laravel 应用程序中为 API 服务提供多种身份验证方式。该应用程序是一个使用 Vue.js 的 SPA,并使用 API 路由来呈现和呈现所有视图组件。目前,我正在为应用程序中的 API 防护使用 JWT 驱动程序。但是,我还想为我的客户提供通过 OAuth 和 Laravel 的个人 API 令牌访问相同 API 的能力。话虽如此,我如何使用 Auth 中间件保护我的资源,在该中间件可以通过 JWT 在内部访问它,或者通过 OAuth 或 API 令牌在外部由客户端访问。

控制器:

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()

    // Make sure user is authenticated
    $this->middleware('auth:api');
    //$this->middleware('auth:oauth');

身份验证:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
    'oauth' => [
        'driver' => 'token',
        'provider' => 'users',
    ]
],

【问题讨论】:

这篇文章有点过时,但我相信仍然相关:pusher.com/tutorials/… 【参考方案1】:

如果您希望能够为您的路线允许多个守卫,您可以为中间件调用提供不同的守卫,就像您已经使用 api 守卫所做的那样,除了您将它们作为逗号分隔值提供:

$this->middleware('auth:api,oauth,web');

这意味着如果用户已通过其中一名守卫的身份验证,他们将能够访问路线。

【讨论】:

谢谢,就是这样!

以上是关于LARAVEL:一个身份验证守卫的多个驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 多身份验证中为单个守卫自定义登录凭据

Laravel 8 使用 Guards Rest Password 的多重身份验证问题

为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者

Laravel 7 将默认守卫更改为员工,但当前经过身份验证的用户返回 null

Laravel 自定义多重身份验证

Laravel 5.5 - 升级身份验证后没有正确重定向