laravellaravel-sanctum

Laravel 7 Sanctum logout


I'm using Laravel 7 with Sanctum authentication for my app.
How can i implement the logout procedure?
I use:

Auth::user()->tokens()->delete();

and it works, but It delete all tokens of this user. i would like to delete only the token of the user who requested the logout, in this way the other sessions should remain open


Solution

  • You need to specify the user :

    // 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();
    

    Update of Laravel 7, 8, 9, 10 :

    // 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();