본문 바로가기
팀 프로젝트/최종 프로젝트

트러블슈팅- 삭제된 RefreshToken 조회 시 500에러

by pon9 2025. 2. 15.

문제상황

로그아웃을 하고 레디스 저장소에서 삭제된 refreshToken에 대해 해당 에러가 나고있다.

이건 한번 사용된 리프래시 토큰으로 테스트를 수행한 결과인데, 둘의 차이점은 무엇일까?

 

 

분석

우선 에러 발생지는 이곳이니까 로그를 찍어보자.

필터링 과정이 총 3번 수행되고, 마지막 토큰이 null로 찍혔다

수행 과정을 정확히 분석하기 위해 디버깅 모드로 실행하자

찾았다

앞의 두번은 그냥 헤더의 토큰이 유효한 토큰인지 검사한거고,

storedRefreshToken의 prefix를 제거하는 과정에서 생긴 로직 오류라는 것을 알 수 있었다.

해당 user의 refreshToken이 이미 로그아웃 된 상태라 존재하지 않으므로 null이라 오류가 생긴 거다

로직을 수정해주자.

 

 

결과

여기 이 레디스 저장소에서 가져온 storedRefreshToken을 검증하는과정에서 null에 대한 처리만 수행하고 blank처리는 안 한 것이 문제였다.

isBlank()로 빈 값에 대한 검증도 하도록 수정했다

빈 값 처리도 꼼꼼히 하자 ^_^

 

그런데,

사실 근본적인 원인은 이놈이다. 굳이굳이 null이라면 ""을 반환하도록 설정한 내 탓이다..

null이면 null 그대로 반환할까 고민해봤는데, 음..

 

이런 코드 스타일에 대한 고민을 튜터님들과 토론해봐야겠다!

blank가 되도록 설정했다면, isBlank()체킹만 확실히 잘 해주면 오늘같은 불상사는 일어나지 않는다.