현재 우리회사의 토큰 시간은
access token의 경우 5분, refresh token의 경우 1일이라고 알고 있다.
access token의 시간을 짧게 잡은 이유는 토큰 탈취 문제를 피하고자 함이다.
하지만 5분마다 401 상태코드가 반환되어 다시 로그인을 해야한다면
유저의 입장에서는 굉장히 불편함을 느낄 것이다.
따라서 개발자의 입장에서는 access token의 유효시간은 짧게 유지하되
상대적으로 유효시간이 긴 refresh token을 하나 더 발급하여
사용자는 모르게 access token을 갱신해야합니다.
제가 주로 사용하는 axios 라이브러리에는 axios interceptor 라는 기능이 있습니다.
우리는 요청을 보낸 후 401 상태코드를 받을 때 요청을 가로채야하기 때문에
axios.interceptors.response를 사용합니다.
#1. 토큰 재발급 요청 함수 작성
#2. interceptors 로직 작성
관련 로직은 아래 링크를 참고하시면 됩니다.
사실 상 핵심은 401코드로 응답받았을 때의 로직입니다.
401일때, 1번에서 만든 토큰 재발급 API를 호출하고
새로 발급받은 토큰을 브라우저 스토리지에 덮어 씌우는 것입니다.