laravel - LARAVEL:一个身份验证守卫的多个驱动程序
问题描述
我正在尝试在我的 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');
这意味着如果用户已通过其中一名警卫的身份验证,他们将能够访问路由。
推荐阅读
- c - 在c编程中将十六进制转换为二进制
- pyqt5 - 有什么方法可以检查 QRect 是否在 pyqt5 的边界内包含 QGraphicspathitem?
- swift - 如何在具有相反滚动方向的 uiscrollview 内添加子 uiscrollview?
- python - Python:清除输出控制台
- node.js - 我可以从我自己的服务器安装 Node.js 模块吗?
- sql-server - 从 ssis 中的目录(使用 xslt 操作)转换 xml 文件并将它们移动到新目录中?
- dictionary - Golang multiple timers with map+channel+mutex
- javascript - 我的问题是客户需要的表单字段,如果键入的数字以 mm/dd/yyyy 格式转换为正确的日期格式
- python - 使用 TensorFlow 训练的模型在 Django 中不可用
- jenkins - 管道评估 yaml 文件中的变量