Laravel Sanctum auth:sanctum 路由允许在没有承载令牌的情况下访问
Posted
技术标签:
【中文标题】Laravel Sanctum auth:sanctum 路由允许在没有承载令牌的情况下访问【英文标题】:Laravel Sanctum auth:sanctum route allows access without bearer token 【发布时间】:2021-08-01 08:57:47 【问题描述】:我正在尝试使用 Laravel Sanctum 使用不记名令牌保护 API 路由。
我已经在 api.php 中为路由正确添加了中间件,如下所示。 api/me路由设置为return auth()->user();
Route::group(['middleware' => ['auth:sanctum']], function ()
Route::post('/me', 'App\Http\Controllers\APIController@me');
);
为了测试这一点,我首先成功登录并生成一个不记名令牌,这样就可以正常工作了。
但是,当我尝试在没有承载令牌的情况下访问 api/me 路由时,它仍然显示完整用户。它不应该允许在没有承载令牌的情况下访问路由,为什么要这样做?
我已经搜索了几个小时,但没有任何乐趣 - 有人有任何见解吗?
【问题讨论】:
【参考方案1】:我只是在这里猜测.. 您是否在 kernel.php 中“确保前端请求AreStateful”? 因为 Sanctum 将使用基于 Session-Cookie 的身份验证。只有在您对不在您的域或子域上运行的第三方应用程序进行身份验证时,Sanctum 才会使用不记名令牌。
如果您不想为您的 SPA 使用基于会话 cookie 的身份验证,请从 kernel.php 中删除“EnsureFrontendRequestsAreStateful”类。 现在 Sanctum 将始终使用不记名令牌进行身份验证。
【讨论】:
嘿,是的,我做到了,如果是这样,您如何测试承载身份验证是否在 localhost 开发环境中工作? 在这种情况下,您不想确保前端请求是有状态的。所以从 kernel.php 中删除该类 @raistie 如果您可以投票赞成这个答案会很好,因为它似乎可以解决您的问题。 我正在尝试,但我的声誉不足:( @NICO 我想知道你是否可以帮助我。我的问题与OP完全相反。我有 EnsureFrontendRequestAreStateful 但我无法获得圣所来验证我的 API 请求,我遵循了文档但仍然没有乐趣。可以私信你吗?以上是关于Laravel Sanctum auth:sanctum 路由允许在没有承载令牌的情况下访问的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CSRF 令牌测试 Laravel / Sanctum 端点
Laravel Sanctum auth:sanctum 路由允许在没有承载令牌的情况下访问
带有 Sanctum 身份验证的 Laravel 8 (Reactjs SPA)