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:apiRoute::get('/users', 'Api\UserController@index')->middleware('auth:api');但它会将我重定向到我的仪表板。我需要在 AuthServiceProvider 或任何其他配置中进行更改吗? 你不需要专门使用护照,还有许多其他的 api auth 包。这个比较常用:github.com/tymondesigns/jwt-auth

以上是关于Laravel 无法保护 API 路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 保护 API 路由

如何保护 laravel api 路由免受外部 GET 请求的影响

无法基于角色 Laravel 8 保护路由

Laravel Passport - 保护不同用户类型的路由

如何使用 Laravel Passport 组织这样的路由保护?

在 Laravel 中验证用户角色并保护路由