Skip to content

Sanctum still logs in after logging out & deleting tokens in a scenario where you dont refresh browser #538

Closed
@bloodykheeng

Description

@bloodykheeng

Sanctum Version

4.0

Laravel Version

11.0

PHP Version

8.2

Database Driver & Version

No response

Description

After logging out and i dont refresh the browser sanctum still logs me in
i have a laravel api and react front end

Steps To Reproduce

This is my log out in laravel api ive tried all solutions they have failed thats why u see many comments there


    public function logout(Request $request)
    {
        /** @var \App\Models\User */
        $user = Auth::user(); // Get the authenticated user

        $userToken = $user->token();
        $userToken->revoke();

        // // // Delete all tokens for the user
        // // $user->tokens()->delete();

        // // delete the current token that was used for the request
        // $request->user()->currentAccessToken()->delete();

        // //
        // session()->flush();

        // Auth::logout();

        // $request->session()->invalidate();

        // $request->session()->regenerateToken();

        return response()->json(['message' => 'Logged out successfully']);
    }

react
uill see in my react i had to first reload the browser which isnt cool
window.location.reload();


  // Logout mutation function
    const logoutMutation = useMutation({
        mutationFn: logout,
        onSuccess: (data) => {
            setLogoutMutationIsLoading(false);

            // clear local storage
            // localStorage.removeItem("access_token");
            // localStorage.removeItem("refresh_token");

            // Set localStorage items to null
            // localStorage.setItem("access_token", "null");
            // localStorage.setItem("refresh_token", "null");

            localStorage.removeItem("access_token");
            localStorage.removeItem("refresh_token");

            // Reset the user state to null
            queryClient.resetQueries();
            queryClient.clear();
            queryClient.refetchQueries();

            // Remove the Authorization header from Axios
            axios.defaults.headers.common["Authorization"] = null;

            // Remove the Authorization header from Axios
            delete axios.defaults.headers.common["Authorization"];

            // Set loading state to false
            console.log("logout response is : ", data);
            navigate("/login");
            window.location.reload();
            // Display a success toast message
            toast.success("Goodbye 👋");
        },
        onError: (error) => {
            setLogoutMutationIsLoading(false);
            // Display an error toast message
            toast.error("Logout Error");

            // Log the error
            console.log("Logout errors ", error);
        },
    });

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions