JWT 토큰을 Redis에 저장하는 이유
JWT의 특징은 서버에서 상태를 저장하지 않아도 인증이 가능한 것.
하지만 로그아웃 시 “토큰을 바로 만료시킬 방법이 없다”는 게 문제다.
서버(redis)에서 토큰을 관리한다면 다음과 같은 장점이 있다.
- 로그인 시 Access Token & Refresh Token을 Redis에 저장
- 로그아웃하면 Redis에서 토큰을 즉시 삭제
- 만료된 토큰을 서버에서 체크 가능
JWT(JSON Web Token) 기반 인증을 사용할 때 Access Token과 Refresh Token을 Redis에 저장하면 세션 관리 및 토큰 무효화를 쉽게 할 수 있다.
집잇다 프로젝트를 진행하며 Redis를 이용해 로그인/로그아웃 후 토큰이 어떻게 저장 및 삭제되는지 직접 확인해보았다.
토큰 저장 방식
Redis에 저장되는 토큰 형태
TOKEN:user@example.com -> eyJhbGciOiJIUzI1...
로그인 후 Redis에 저장된 토큰 조회
먼저 사용자가 로그인하면 Redis에 토큰이 저장된다.
Redis CLI를 실행하고 저장된 토큰을 확인할 수 있었다.
Redis CLI 실행
redis-cli
저장된 토큰 키 확인
keys TOKEN:*
포스트맨으로 로그인 API를 날린 후에 명령어로 redis에 토큰이 저장되어 있는지 확인해보았다.


이처럼 로그인한 사용자의 토큰이 저장된 것을 확인할 수 있다.
로그아웃 실행 후 토큰 확인
로그아웃 API를 호출하면, Redis에서 해당 토큰이 삭제된다.


토큰이 삭제된 것을 확인할 수 있습니다.
즉, 로그아웃을 하면 토큰이 무효화되고, 이후 해당 토큰으로 요청을 보내면 인증이 거부되는 것을 알 수 있다.
로그인, 로그아웃 시 Redis의 변화를 실시간으로 관찰하려면 MONITOR 명령어를 사용하면 된다.
redis-cli monitor
이 명령어를 실행한 상태에서 로그인을 하면 아래와 같은 로그를 확인할 수 있다.

이렇게 실시간으로 Redis에서 토큰이 저장되고 삭제되는 과정을 추적할 수 있다.
✔ 로그인 : Access Token & Refresh Token을 Redis에 저장
✔ 로그아웃 : Redis에서 해당 토큰 삭제(무효화)
이렇게 하면 JWT 기반 로그인/로그아웃을 더 안전하게 관리할 수 있다.
특히 토큰 강제 만료 기능을 구현할 수 있어 보안성이 훨씬 올라간다. 추후 Refresh Token을 활용한 자동 로그인 기능까지 추가해서 완벽한(?) 또는 사용자에게 편리한 인증 시스템을 구축할 수 있을 것이다.