LARAVEL: 一个 auth guard 有多个驱动程序
LARAVEL: Multiple drivers for one auth guard
我想在我的 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',
]
],
如果您希望能够为您的路由允许多个守卫,您可以为中间件调用提供不同的守卫,就像您已经对 api
守卫所做的那样,除了您将它们作为逗号分隔值提供:
$this->middleware('auth:api,oauth,web');
这意味着如果用户已通过其中一名警卫的身份验证,他们将能够访问该路线。
我想在我的 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',
]
],
如果您希望能够为您的路由允许多个守卫,您可以为中间件调用提供不同的守卫,就像您已经对 api
守卫所做的那样,除了您将它们作为逗号分隔值提供:
$this->middleware('auth:api,oauth,web');
这意味着如果用户已通过其中一名警卫的身份验证,他们将能够访问该路线。