ZinnaChoi / Study-Management

온라인 스터디 관리 시스템: 부재 일정 캘린더, 토론 게시판 및 알림 기능 제공
8 stars 0 forks source link

Task logout api #57

Closed MeMyself-And-I closed 7 months ago

MeMyself-And-I commented 7 months ago

안녕하세요 @ZinnaChoi redis(인 메모리 DB)를 활용하여 로그아웃 API 개발 완료하였습니다 주요 내역은 하기 참고 부탁드립니다.

image

[feat]

  1. logout API 개발 및 테스트 코드 작성
  2. redis 사용을 위한 docker-compose.yml 파일 작성

[refactor]

  1. member entity내에서 사용하지 않는 expiredAt 필드 제거

상기 내용에 따라 테스트 또는 어플리케이션 실행 전 선행 사항은 아래와 같습니다.(이번 PR 머지 후 메신저를 통해 공유 예정입니다.)

  1. expiredAt 필드가 제거되었기 때문에 스키마 변경 내용 반영을 위하여 application.properties 파일 내 spring.jpa.hibernate.ddl-auto=create 모드로 최초 한 번 실행
  2. 로그인 및 로그아웃시 사용되는 redis를 동작시키기 위해 아래 절차 실행 2-1) 프로젝트 루트 경로 터미널에서 redis 디렉토리 이동 -> cd redis/ 2-2) docker-compose up -d 명령어 실행 2-3) docker ps를 통해 study_redis 컨테이너의 실행 여부 확인

JWT는 발급처(어플리케이션)에서도 강제로 만료 시킬 수 없기 때문에 redis를 통해서 구현하였으며, 로그아웃 절차를 단순화 하면 아래와 같습니다.

  1. 로그인시 해당 로그인 정보를 redis에 저장
  2. 로그아웃 시 현재 로그인 정보가 redis에 저장되어 있는지 비교
  3. 저장되어 있다면 정보 삭제
  4. 로그아웃 후 같은 로그인 정보의 API 요청들은 이미 로그아웃 API를 통해 토큰이 만료(= Redis에서 삭제) 되었기 때문에 동작 x
MeMyself-And-I commented 7 months ago

우와 로그아웃,,, 어려운 친구였네요!!

그리고 로그아웃 API를 보다 보니 궁금해진건데,,, 회원 탈퇴는 할 수 없나용?!

너무 수고하셨어용 코멘트 참고 부탁드립니다!!

회원탈퇴가 누락되었네요.. 이슈로 추가해놓았습니다.

59

다른 인원 차주부터 프론트 작업도 해야하니 레이아웃 작업 마치고 1순위 이슈로 해결하겠습니다!