Open utterances-bot opened 2 months ago
Cái chỗ logic tại màn hình logout trong useEffect chỗ kia của anh thì nếu họ gõ /logout thì mình sẽ bị logout do a đang check là refreshToken && refreshToken !== getRefreshTokenFromLocalStorage() Nếu không có refreshToken thì nó sẽ pass và gọi hàm logout api
"use client";
import { LOCAL_STORAGE } from "@/constants/local-storage";
import { getAccessTokenFromLocal, getRefreshTokenFromLocalStorage } from "@/lib/local-storage";
import { useLogoutMutation } from "@/queries/useAuth";
import { useRouter, useSearchParams } from "next/navigation";
import { useEffect } from "react";
const LogoutPage = () => {
const { mutateAsync } = useLogoutMutation();
const router = useRouter();
const searchParams = useSearchParams();
const refreshToken = searchParams.get(LOCAL_STORAGE.refreshToken);
const accessToken = searchParams.get(LOCAL_STORAGE.accessToken);
console.log({ refreshToken, accessToken });
useEffect(() => {
const idTimer = setTimeout(() => {
if (
(refreshToken && refreshToken === getRefreshTokenFromLocalStorage()) ||
(accessToken && accessToken === getAccessTokenFromLocal())
) {
// Xử lý call api logout
mutateAsync().then(() => {
router.push("/login");
});
}
}, 200);
return () => {
clearTimeout(idTimer);
};
}, [accessToken, mutateAsync, refreshToken, router]);
return <div>Logout Page</div>;
};
export default LogoutPage;
Cái chỗ logic tại màn hình logout trong useEffect chỗ kia của anh thì nếu họ gõ /logout thì mình sẽ bị logout do a đang check là refreshToken && refreshToken !== getRefreshTokenFromLocalStorage() Nếu không có refreshToken thì nó sẽ pass và gọi hàm logout api
Đúng rồi, bug của anh!
Mọi người sửa lại đoạn điều kiện ntn nhé
if (
ref.current || !refreshTokenFromUrl || !accessTokenFromUrl ||
(refreshTokenFromUrl &&
refreshTokenFromUrl !== getRefreshTokenToLocalStorage()) ||
(accessTokenFromUrl &&
accessTokenFromUrl !== getAccessTokenFromLocalStorage())
) {
return
}
Trường Hợp ở Client , khi cố ý sửa accessToken Trong cookies thì e thấy chưa có trường hợp đó tại sao vậy anh ?
Trường Hợp ở Client , khi cố ý sửa accessToken Trong cookies thì e thấy chưa có trường hợp đó tại sao vậy anh ?
Ai là người sửa được cookie, chỉ có người dùng sửa được thôi. Vậy nếu sửa ra đúng 1 cái access token chính xác thì cứ dùng bình thường. Giống như login facebook bằng cookie vậy em (nếu em chưa biết thì search gg sẽ thấy)
Còn nếu sửa sai thì cái access token nó k đúng, dẫn đến gọi API sẽ bị lỗi 401 và logout ra
Khu vực học tập | Được Edu
Được chỉ cung cấp các khóa học lập trình online chất lượng, nói không với khóa lởm!
https://edu.duthanhduoc.com/learn/Next.Js-Super?lessonId=520