24.03.26 19:49 작성
·
295
·
수정됨
0
signOut({ redirect: false }).then(() => {
fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/logout`, {
method: "post",
credentials: "include",
});
router.refresh();
router.replace("/");
});
로그아웃 버튼에 `router.refresh()`를 추가하면 로그아웃 버튼을 누르고 다시 로그인했을 때 기존 정보의 캐시가 삭제되고 새로 갱신된다고 하셨는데
저 코드를 추가해도 기존 정보가 계속 남아있는 경우는 어디를 확인해봐야 할까요?
브라우저에서 캐시 지우고 새로고침, 브라우저 창 재시작, 서버 껐다 켜기를 해봤는데도 계속 이전 정보가 남아있습니다..
답변 3
0
2024. 05. 27. 17:59
이제는 간단하게 다음 코드로 대체하면 됩니다. 한 방에 로그아웃&세션클리어 됩니다.
signOut({ callbackUrl: '/' });
0
2024. 03. 27. 02:19
현재 ch4 코드에서 router.refresh()를 추가하니 기존 정보가 없어지는 것을 확인했습니다. 한 가지 다른 점은 router.redirect('/') 앞이 아니라 뒤에 refresh를 넣으니 됩니다. 앞에 넣으면 안 되네요.
2024. 03. 27. 19:55
이 부분은 저도 단순히 공식문서로는 확인이 안 돼서 한 번 next.js 소스코드 까보겠습니다. 일단 우열님의 추론이 맞는 것 같습니다.
rotuer.refresh가 current route를 refresh하는 거라서 현재 라우트가 누구냐가 중요한 것 같네요.
router.refresh()
: Refresh the current route.
0
2024. 03. 26. 20:05
signOut 시에 next서버쪽에는 에러가 없나요? 브라우저 캐시가 아니라 쿠키를 지워야 로그아웃이 되긴 합니다(이게 signOut의 역할이긴 합니다). 네트워크탭의 로그아웃요청 cookies 탭에서 쿠키가 사라지고 있어야 합니다.
2024. 03. 26. 21:34
네.. 에러는 전혀 없구요.
네트워크 탭에서 프론트, 백 쿠키 모두 지워지고 있습니다.
라우터 캐시라고 하셔서 클라이언트에 캐시가 남아있다고 판단했습니다.
새로고침하면 다시 로그인한 유저 정보가 들어오긴 합니다.
2024. 03. 26. 22:15
├── @auth/core@0.27.0
├── @faker-js/faker@8.4.1
├── @mswjs/http-middleware@0.9.2
├── @tanstack/react-query-devtools@5.28.4
├── @tanstack/react-query@5.28.4
├── @types/cors@2.8.17
├── @types/express@4.17.21
├── @types/node@20.11.26
├── @types/react-dom@18.2.22
├── @types/react@18.2.65
├── classnames@2.5.1
├── cookie@0.6.0
├── cors@2.8.5
├── dayjs@1.11.10
├── eslint-config-next@14.1.3
├── eslint@8.57.0
├── express@4.18.3
├── msw@2.2.4
├── next-auth@5.0.0-beta.11
├── next@14.1.3
├── react-dom@18.2.0
├── react-intersection-observer@9.8.1
├── react-textarea-autosize@8.5.3
├── react@18.2.0
├── typescript@5.4.2
└── zustand@4.5.2
현재 npm 리스트 이렇게 사용중입니다
2024. 03. 27. 16:27
뒤에 넣으니 해결 됐습니다!
앞에 넣은 경우는
/home
에서 로그아웃을 한 경우/home
의 캐시를 지우고/
로 리다이렉트가 되고/
에서 로그인을 다시 하는 경우/
에 캐시가 남아있어 캐시된 정보를 불러왔다고 판단해야 할까요?뒤에 넣은 경우는
/home
에서/
로 리다이렉트를 한 뒤 refresh로 캐시를 지웠기 때문에/
의 캐시된 데이터가 없어 로그인 후에/home
에서 새로운 데이터를 갱신했기 때문인건지 궁금하네요..