a-happy-dev-day / yanawa-server

Rival Matching Services Server
0 stars 1 forks source link

[Documentation] 로그아웃 기능 요구 사항 #25

Closed this-is-spear closed 1 year ago

this-is-spear commented 1 year ago

로그아웃 기능 구현

요구사항
  1. 로그아웃한 사용자의 액세스 토큰과 리프레시 토큰을 저장해 요청이 올 때마다 필터링한다.
  2. 액세스 토큰이 만료되지 않은 상황에서 액세스 토큰을 갱신한 경우 이전 액세스 토큰을 저장해 다음 요청이 올 때 필터링한다.
프로그래밍 요구사항
  1. RDBMS에 유효하지 않은 토큰을 저장해 식별한다.
  2. RDBMS에 저장할 경우, 저장소 중 일부를 캐싱한다.
  3. 캐싱 데이터의 총 수량은 100개로 가정하고 교체하는 방식은 페이지 캐시 히트율에 따라 기준을 정한다.
  4. 유효하지 않은 토큰을 저장하는 스토리지는 변경 가능하게 설계한다.

로그아웃 이벤트 흐름

  1. 인가된 사용자가 로그아웃을 요청했다.
  2. 사용자의 액세스 토큰과 리프레시 토큰을 유효하지 않은 토큰을 모은 저장소에 저장했다.
  3. 사용자는 로그아웃이 완료됐다.

인수 테스트

  1. 사용자가 액세스 토큰을 입력해 로그아웃 요청하면 로그아웃에 성공한다.
  2. 사용자가 리프레시 토큰을 입력해 로그아웃을 요청하면 로그아웃에 성공한다.
  3. 사용자가 액세스 토큰을 만료시키면 자신의 정보에 접근할 수 없다.
  4. 사용자가 리프레시 토큰을 만료시키면 토큰을 갱신할 수 없다.

문서화

  1. 액세스 토큰만을 이용한 토큰 만료 요청
  2. 리프레시 토큰만을 이용한 토큰 만료 요청

TokenController

행위

TokenManagementService

행위

this-is-spear commented 1 year ago

변경된 요구 사항

유효하지 않은 토큰을 관리하는 것보다 유효한 토큰을 관리하는 방식이 효율적입니다.

유효하지 않은 토큰인지 검사하는 방식보다 사용자 ID를 활용한 HashMap 방식으로 데이터를 찾는 방식이 중복이 없기 때문에 리소스를 적게 사용하고 검색이 빠릅니다.

this-is-spear commented 1 year ago

변경된 TokenManager