기존에 엔조이 트립에서는 access token과 refresh token이 존재하였다. refresh token 이용 부분의 개념이 약하기도 하기 때문에, 해당 부분을 리팩터링한 과정을 후술하도록 한다.

현재 스프링 구현 상태에서, header 로 부터 access token을 가져오고, 이는 유효성이 있을 때, 요청이 실행되는 구조이다.
<aside>
💡 case1일 때 → access token 만료된 에러가 뜬다 → /access-token 요청, refresh-token 만료되었다. → 에러
case2일 때 → access token 만료된 에러가 뜬다. → /access-token이 유효하다. refresh token 을 통해 access-token 재발급.
case3일 때, /refresh-token 요청 → refresh-token 재발급
case4일 때, 정상 동작.
</aside>
과 같이 구현 하면 된다.
우리 프로젝트에서는 refresh-token을 redis에 저장하였다. 왜냐하면, 인메모리 디비기 때문에 서버에 부담을 덜어줄 뿐만 아니라, TTL을 걸어주어, 만료가 되면 자동 삭제 하는 로직을 구현하기 위해서 이다. 또한 로그아웃이 될 때, accessToken 을 redis의 blackList로 등록하기 위해서 redis를 이용하였다.
→ 이를 통해 액세스 토큰 유효기간 만큼 redis에 등록해놓으면, 해당 토큰이 블랙 리스트이기 때문에 로그인 할 수 없다. 또한 유효기간 지나면 자동으로 삭제된다.