Laravel 7 Sanctum 注销

enf*_*fix 6 laravel laravel-sanctum

我正在为我的应用程序使用带有 Sanctum 身份验证的 Laravel 7。
如何执行注销程序?
我用:

Auth::user()->tokens()->delete();
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它会删除该用户的所有令牌。我只想删除请求注销的用户的令牌,这样其他会话应该保持打开状态

sta*_*sta 13

您需要指定用户:

// Revoke a specific user token
Auth::user()->tokens()->where('id', $id)->delete();
Run Code Online (Sandbox Code Playgroud)
// Get user who requested the logout
$user = request()->user(); //or Auth::user()
// Revoke current user token
$user->tokens()->where('id', $user->currentAccessToken()->id)->delete();
Run Code Online (Sandbox Code Playgroud)

Laravel 7、8更新:

// Revoke the token that was used to authenticate the current request...
$request->user()->currentAccessToken()->delete();

// Revoke a specific token...
$user->tokens()->where('id', $tokenId)->delete();
Run Code Online (Sandbox Code Playgroud)


use*_*086 11

注销,在 laravel 9 和 10 中

   use Laravel\Sanctum\PersonalAccessToken;


   // Get bearer token from the request
    $accessToken = $request->bearerToken();
    
    // Get access token from database
    $token = PersonalAccessToken::findToken($accessToken);

    // Revoke token
    $token->delete();
Run Code Online (Sandbox Code Playgroud)


小智 7

对于注销,如果使用 currentAccessToken() 可以直接删除令牌。

$request->user()->currentAccessToken()->delete();
Run Code Online (Sandbox Code Playgroud)