Skip to content

feat(readMe): readMe, API 명세서 추가 작성#66

Open
yeon-22k wants to merge 8 commits intodevfrom
feat/readme/edit
Open

feat(readMe): readMe, API 명세서 추가 작성#66
yeon-22k wants to merge 8 commits intodevfrom
feat/readme/edit

Conversation

@yeon-22k
Copy link
Collaborator

@yeon-22k yeon-22k commented Oct 17, 2025

계속 수정중에 있습니다! 추가되는 내용은 아래에 계속 이어서 작성하겠습니다.

  • readme: 개발 환경 db 버전 수정
  • api-dos: 노션 API 명세서 기반으로 모든 API 초안 작성했습니다(request, response 계속해서 수정할 예정입니다)
  • api-docs: review에 누락된 api가 있어서 추가했습니다
  • 팀원 역할 추가, 핵심 기능 구현 추가
  • erd 이미지 변경
  • api 명세 1차최종 작성

제가 체크하긴 했지만, 혹시 몰라서 담당하신 도메인 API들 한번씩 확인해주시면 감사하겠습니다! (아무것도 없는 단순 코드블럭은 추후에 삭제할 예정입니다)

  • 누락된 API가 있는지
  • 기능명, 메서드, URI가 정확한지

@yeon-22k yeon-22k self-assigned this Oct 17, 2025
@dnjsals45
Copy link
Collaborator

도메인 별 핵심 기능 상세 구현(인증)

인증

회원가입

  • username, password를 이용한 신규 사용자 등록
  • 회원가입 시점에서 권한(CUSTOMER, OWNER, MANAGER, MASTER) 설정 가능
  • 즉시 로그인 처리되어 Access Token(Header), Refresh Token(Cookie) 자동 발급
  • 비밀번호는 BCryptPasswordEncoder를 통해 암호화 저장

로그인

  • username, password를 이용한 인증 처리
  • PasswordEncoder.matches()를 통한 비밀번호 검증
  • Access Token(Header), Refresh Token(Cookie) 발급

로그아웃

  • 현재 사용 중인 Access Token과 Refresh Token을 블랙리스트에 추가
  • 로컬 캐시 기반 블랙리스트 관리로 빠른 토큰 무효화 처리
  • Refresh Token 쿠키 무효화

회원 탈퇴

  • Soft Delete 방식으로 사용자 및 연관 데이터 삭제
  • 권한별 차등 삭제 로직:
    • OWNER: 소유 가게 → 메뉴 → 리뷰 → 리뷰 댓글 등 연관 데이터 일괄 삭제
    • CUSTOMER: 리뷰, 주문 등 개인 데이터 삭제
  • 탈퇴 후 자동 로그아웃 처리 (토큰 블랙리스트 추가)

JWT 기반 인증 시스템

토큰 관리 전략

  • Access Token: HTTP Authorization Header로 전달 (짧은 유효기간)
  • Refresh Token: HttpOnly Cookie로 전달 (긴 유효기간)
  • JWT 라이브러리: jjwt 사용

토큰 재발급 (RTR 기법 적용)

  • Refresh Token Rotation (RTR) 기법을 통한 보안 강화
    • 토큰 재발급 시 Refresh Token도 함께 재발급
    • 기존 Refresh Token은 블랙리스트에 추가
    • 탈취된 Refresh Token의 장기 사용 방지
  • Refresh Token의 최대 유효기간 유지
    • 재발급 시에도 원본 Refresh Token의 만료 시간을 그대로 적용
    • 무한 갱신 방지 및 주기적 재로그인 유도
  • Access Token, Refresh Token 모두 만료 시 재로그인 필요

인증 필터 처리

  • JwtAuthenticationFilter:
    • 요청 헤더 및 쿠키에서 토큰 추출
    • 토큰 검증 및 사용자 인증 정보 생성
    • SecurityContextHolder에 인증 정보 저장
    • 토큰이 없는 경우 public URL로 판단
  • JwtExceptionFilter: JWT 필터에서 발생하는 예외 처리
  • JwtTokenProvider: 토큰 발급, 검증, 디코딩 담당

결제 부분은 저녁에 와서 다시 작성하도록 하겠습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants