Laravel 无法保护 API 路由
Posted
技术标签:
【中文标题】Laravel 无法保护 API 路由【英文标题】:Laravel cannot protect API routes 【发布时间】:2018-06-28 14:47:10 【问题描述】:我的routes/api.php
中有以下路线:
Route::group(['middleware' => ['auth']], function ()
Route::get('users/', 'Api\UserController@index');
);
这会不断将我重定向到我的仪表板。
然后我试试这个:
Route::get('users/', 'Api\UserController@index')->middleware('auth');
这可行,但它不保护路由,所以如果我退出,我仍然可以访问它。
任何想法为什么会这样?我不确定验证 API 路由的最佳方式是什么,通常的约定是什么?
我正在使用 Laravel 5.5
【问题讨论】:
【参考方案1】:您不能在api.php
路由中使用auth
中间件,只能在web.php
中使用。但是你可以使用auth:api
中间件。
https://laravel.com/docs/5.5/passport#protecting-routes
【讨论】:
我明白了,在文档中的任何地方都看不到。那么这是否意味着我必须使用 Passport 呢? 我曾尝试像这样使用auth:api
:Route::get('/users', 'Api\UserController@index')->middleware('auth:api');
但它会将我重定向到我的仪表板。我需要在 AuthServiceProvider 或任何其他配置中进行更改吗?
你不需要专门使用护照,还有许多其他的 api auth 包。这个比较常用:github.com/tymondesigns/jwt-auth以上是关于Laravel 无法保护 API 路由的主要内容,如果未能解决你的问题,请参考以下文章
如何保护 laravel api 路由免受外部 GET 请求的影响
Laravel Passport - 保护不同用户类型的路由