로그아웃이 잘 되지 않으면?

김키핑·2026년 8월 30일
post-thumbnail

로그아웃

웹사이트, 앱, 컴퓨터 시스템 등에 연결된 자신의 계정 접속을 안전하게 종료하고 나가는 것
어떠한 원인으로든 로그아웃이 잘 이루어지지 않으면 기존 인증 정보가 남아 다른 사용자가 로그인했을 때 이전 사용자의 계정 정보로 잘못 인식되거나, 개인정보 및 구매이력이 잘못 처리되는 문제가 발생할 수 있다.

원인설명
클라이언트 토큰 미삭제로그아웃 시 브라우저의 localStorage/sessionStorage/쿠키에 저장된 토큰을 삭제하지 않아 이전 인증 정보가 남음
서버 세션/Refresh Token 미폐기클라이언트 토큰만 지우고 서버 DB의 세션이나 Refresh Token을 폐기하지 않으면, 해당 정보가 재사용될 수 있음
다중 탭/창 동기화 미흡여러 탭이 열려있을 때 한 탭에서 로그아웃해도 다른 탭의 상태(전역 스토어, 캐시)가 갱신되지 않아 이전 인증 정보로 요청이 이어짐
캐싱 문제개인화된 API 응답에 Cache-Control 설정이 없어 브라우저나 CDN이 이전 사용자의 응답을 캐싱해 재사용
토큰 만료 시간 설정 오류Access/Refresh Token의 만료 시간이 지나치게 길게 설정되어 로그아웃 후에도 유효 기간이 남아있음
클라이언트 전역 상태 미초기화Redux, React Query 등 프론트엔드 캐시에 이전 사용자 정보가 남아있는 상태로 새 로그인 진행

....

(추가예정)

시스터디 답변

JWT Access Token은 발급 후 서버에서 즉시 무효화하기 어렵다는 특징이 있습니다. 따라서 로그아웃 과정에서 클라이언트의 인증 상태가 제대로 초기화되지 않았거나 기존 토큰이 남아 있었다면, 이전 사용자의 인증 정보가 잘못 사용되었을 데이터 정합성 문제 가능성을 의심하겠습니다.

우선 DB에서는 SQL을 활용해 잘못 저장된 구매이력을 정확하게 조회하고, 대상 데이터를 특정한 뒤 아내의 계정정보로 수정하여 데이터 정합성을 복구하겠습니다.

이후 백엔드에서는 로그아웃 시 인증 방식에 따라 세션은 폐기하고, JWT는 Refresh Token을 무효화하며 사용자 인증정보를 즉시 만료 처리하겠습니다. 또한 구매 이력 저장 시에는 클라이언트에서 전달한 사용자 정보를 신뢰하지 않고 서버에서 검증된 인증 정보를 기준으로 저장하여 데이터 정합성을 보장하겠습니다.

결과적으로 DB에서는 잘못된 데이터 복구, 백엔드에서는 인증 정보 무효화와 사용자 검증, 프론트엔드에서는 인증 상태 초기화와 다중 탭 동기화를 통해 데이터 정합성을 회복하고 동일한 문제가 재발하지 않도록 하겠습니다.

profile
양치기소녀

0개의 댓글