首页 文章

一个Laravel路由可以使用会话或令牌身份验证吗?

提问于
浏览
0

我在Laravel 5.4中定义了我的API路由 . 大多数这些路由需要身份验证,我希望能够使用以下任一方式执行此身份验证:

  • 令牌身份验证,即 auth:api (由不同域上的其他Web应用程序使用)

  • 或使用session / cookie auth即 auth ,用于主Web应用程序中的AJAX请求

是否可以这样做,或者我必须两次定义所有路由,使用不同的路由组前缀或其他什么?例如,我是否必须让所有会话身份验证API endpoints 看起来像 /ajax/api-endpoint ,所有令牌身份验证API endpoints 看起来像 /api/api-endpoint

这感觉笨拙和随意 - 我想访问 /api/api-endpoint 无论我使用的auth方法 .

如下所示指定 authauth:api 中间件似乎使Laravel在成功之前需要两种auth方法,而不是只需要其中一种:

Route::get('api/user', 'MyUserController@index')->middleware(['auth', 'auth:api']);

1 回答

  • 2

    web.php 中定义此路由 Route::get('ajax/user', 'MyUserController@index') 并在 api.php 中定义 Route::get('api/user', 'MyUserController@index') ,因此可以在两个路由中使用完全相同的控制器方法,并且在您的控制器方法中使用 auth() 来获取当前用户,无论是使用_1691266执行身份验证还是仅使用auth auth() 您是由任一方法验证的用户 .

    假设您在 web.phpapi.php 中有组,并将适当的中间件应用于组 .

相关问题