我正在尝试使用 Laravel Sanctum 使用不记名令牌保护 API 路由。
我已经在 api.php 中为路由正确添加了中间件,如下所示。 api/me 路由设置为返回 auth()->user();
Route::group(['middleware' => ['auth:sanctum']], function () {
Route::post('/me', 'App\Http\Controllers\APIController@me');
});
为了测试这一点,我首先成功登录并生成了一个不记名令牌,所以工作正常。
但是,当我尝试在没有承载令牌的情况下访问 api/me 路由时,它仍然显示完整的用户。它不应该允许在没有不记名令牌的情况下访问路由,为什么要这样做?
我已经搜索了几个小时,但没有任何乐趣 - 有没有人有任何见解?
答案 0 :(得分:0)
我只是在这里猜测.. 你在 kernel.php 中“EnsureFrontendRequestAreStateful”了吗? 因为那时 Sanctum 将使用基于 Session-Cookie 的身份验证。如果您对不在您的域或子域上运行的第三方应用进行身份验证,Sanctum 只会使用不记名令牌。
如果您不想对 SPA 使用基于会话 cookie 的身份验证,请从 kernel.php 中删除“EnsureFrontendRequestsAreStateful”类。 现在 Sanctum 将始终使用不记名令牌进行身份验证。