LARAVEL:多个驱动程序用于一个身份验证保护

时间:2020-02-10 05:16:30

标签: laravel vue.js authentication oauth laravel-passport

我正在尝试为Laravel应用程序中的API服务提供多种身份验证方式。该应用程序是使用Vue.js的SPA,并使用API​​路由来呈现和呈现所有视图组件。目前,我正在使用JWT驱动程序作为应用程序内的API保护。但是,我还想为我的客户提供通过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');
}

Auth Guards:

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

1 个答案:

答案 0 :(得分:1)

如果您希望能够为路由允许多个警卫,则可以为中间件调用提供不同的警卫,就像您已经使用api警卫所做的一样,只是您将它们提供为逗号分隔的值:< / p>

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

这意味着,如果用户已通过其中一个防护措施进行了身份验证,则他们将能够访问该路由。