A안과 B안의 차이점
A) token_version만
- “이 사용자의 모든 토큰을 한 번에 무효화”하는 가장 단순하고 안정적인 방식
- 단점: 기존 Access 토큰이 ‘즉시’ 죽지 않을 수 있음(DB/캐시 조회 방식에 따라)
B) token_version + Access jti 블랙리스트
- “특정 Access 토큰(jti)을 즉시 차단”하는 방식
- 장점: 이전 로그인에서 발급된 Access를 즉시 끊을 수 있음
- 단점: Redis 키가 늘고 운영/구현이 복잡 (특히 멀티 인스턴스)
2) “기존 로그인 있으면 강제 로그아웃” 기준으로 비교
A 방식에서 강제 로그아웃이 어떻게 되나?
새 로그인 때:
users.token_version++
- 이후 요청에서 서버가 Access 토큰의
tokenVersion과 DB의 최신 token_version을 비교해서 거부
✅ 장점
- 구현이 단순(토큰 검증 로직에 version 체크만 추가)
- Redis/키 관리 부담 적음
- 서버 장애/재시작에도 강함
⚠️ “즉시성”은 어떻게 되나?