Pemba Tamang
Pemba Tamang

Reputation: 185

Laravel sanctum SPA authentication logout is not working

I am using laravel sanctum SPA authentication in my Vue project.Everything is working well but even after logout

Auth::logout()

I am still able to get datas from api route inside middleware

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

I should not be able to get datas after logout.It should show 401 unauthenticated but its not the case. How to solve this problem.I have been stuck here for 3 days.I followed laravel documentation and other tutorial as well but every one logged out same like I did.

Upvotes: 7

Views: 13140

Answers (4)

Rose Riyadh
Rose Riyadh

Reputation: 668

What worked for me now is : auth('sanctum')->user()->tokens()->delete();

Upvotes: 0

Kaddu Livingstone
Kaddu Livingstone

Reputation: 1594

To Logout, a user simply do this in you logout function to delete all the user tokens

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

Or user this to remove only the active token

$request->user()->currentAccessToken()->delete();

Upvotes: 0

ashish.negi
ashish.negi

Reputation: 534

Kindly use Auth::guard('web')->logout(); instead of Auth::logout(). look into SPA Log out issue

Upvotes: 14

Parvez Memon
Parvez Memon

Reputation: 94

In order to logout the specific user, 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()

Upvotes: -1

Related Questions