JWT Lifecycle

access는 짧게 검증하고 refresh는 재발급 전용으로 분리한다

로그인 성공은 토큰 발급으로 끝나지 않는다. 보호 라우트 검증, 만료 처리, refresh 실패 처리가 한 주기로 연결된다.

발급 흐름

LoginLocalStrategy가 사용자 자격 증명을 검증한다.
SignJwtService가 sub, roles, exp를 payload로 서명한다.
Store클라이언트는 access를 짧게 보관하고 요청에 싣는다.

요청 흐름

BearerAuthorization 헤더에서 access token을 읽는다.
VerifyJwtStrategy가 서명과 만료 시간을 검사한다.
Attach검증 성공 시 req.user를 만들고 컨트롤러로 넘긴다.

만료 판단: access가 만료되면 refresh 전용 API로 새 access를 발급하고, refresh도 실패하면 토큰을 폐기하고 다시 로그인한다.