소셜 로그인 후 로그아웃이 안 되는 상황 (기본 유저는 문제 없음)
애플리케이션에 Google 소셜 로그인을 구현할 때 사용자에게 반복되는 오류가 발생.
원활하게 로그인과 로그아웃이 가능한 일반 사용자와 달리, 구글을 통해 로그인한 사용자는 로그아웃 시 '403' 오류가 발생했고, 시스템에서는 해당 토큰을 '미등록'으로 식별.
또한 디버깅을 통해 일반 사용자 로그인 세션에서는 새로 고침 토큰을 성공적으로 생성하고 저장했지만 Google 로그인 세션에서는 그렇지 않은 것으로 나타남.
📄 서버 콘솔 오류
2024-11-06T17:01:49.152+09:00 WARN 25052 --- [ecogrow-backend][nio-8080-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [com.sw.ecogrowbackend.common.exception.CustomException: 등록되지 않은 토큰입니다.]
📄 users 테이블
📄 1번 refresh_token 값
📄 2번 refresh_token 값
📄 구글 로그인 후 디버그 모드
'GoogleService' 클래스에 Google 로그인 사용자를 위한 새로 고침 토큰 생성 및 저장 단계가 없기 때문에 발생.
서비스가 Google 사용자를 위한 액세스 토큰을 성공적으로 생성했지만 DB에 해당 새로 고침 토큰 생성 및 저장을 건너뜀.
Google 로그인 사용자가 토큰에 따른 작업(예: 로그아웃)을 수행하려고 하면 시스템에서 유효한 새로 고침(refresh) 토큰을 찾을 수 없어 인증 문제와 오류가 발생.
'GoogleService'가 액세스 토큰과 함께 새로고침 토큰을 생성하도록 수정. 새로 고침 토큰은 일반 사용자 세션의 동작과 일치하도록 DB에 저장.
코드 업데이트: GoogleService에서 Google 사용자를 검색 또는 등록하고 액세스 토큰을 생성한 후 jwtUtil.createRefreshToken(~)을 사용하여 새로 고침 토큰을 생성하고 refreshTokenService를 통해 저장.
📄 구글 로그인 후 로그아웃 성공
📄 refresh_token db 값 확인