我在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方法 .
如下所示指定 auth
和 auth:api
中间件似乎使Laravel在成功之前需要两种auth方法,而不是只需要其中一种:
Route::get('api/user', 'MyUserController@index')->middleware(['auth', 'auth:api']);
1 回答
在
web.php
中定义此路由Route::get('ajax/user', 'MyUserController@index')
并在api.php
中定义Route::get('api/user', 'MyUserController@index')
,因此可以在两个路由中使用完全相同的控制器方法,并且在您的控制器方法中使用auth()
来获取当前用户,无论是使用_1691266执行身份验证还是仅使用authauth()
您是由任一方法验证的用户 .假设您在
web.php
和api.php
中有组,并将适当的中间件应用于组 .