4

我在我的 Vue 项目中使用 laravel sanctum SPA 身份验证。一切正常,但即使在注销后

Auth::logout()

我仍然能够从中间件中的 api 路由获取数据

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

注销后我应该无法获取数据。它应该显示 401 unauthenticated 但事实并非如此。如何解决这个问题。我在这里被困了 3 天。我也遵循了 laravel 文档和其他教程,但是每个人都像我一样注销了。

4

3 回答 3

8

请使用Auth::guard('web')->logout();而不是Auth::logout(). 查看SPA 注销问题

于 2020-08-17T10:43:38.520 回答
1

要注销,用户只需在您的注销功能中执行此操作即可删除所有用户令牌

public function logout(Request $request) {
auth()->user()->tokens()->delete();
}

或者使用它来仅删除活动令牌

$request->user()->currentAccessToken()->delete();
于 2022-01-22T06:41:25.610 回答
-1

为了注销特定用户,您需要指定用户。

// Revoke a specific user token
Auth::user()->tokens()->where('id', $id)->delete();

// Get user who requested the logout
$user = request()->user(); //or Auth::user()
// Revoke current user token
$user->tokens()->where('id', $user->currentAccessToken()->id)->delete()
于 2020-08-05T12:12:34.840 回答