Skip to content

Conversation

@socm9145
Copy link
Member

@socm9145 socm9145 commented May 30, 2024

PR 타입

  • 기능 추가
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트
  • 기타

개요

  • 구글 계정으로 회원 가입 및 로그인을 JWT Token을 사용한 방식으로 구현했습니다.
  • [중요] 구현된 기능을 실행하는데 필요한 환경 변수를 직접 추가해야 합니다. (env.properties)

변경 사항

Feat: 구현: Oauth 회원 가입 및 로그인 - 4052bdb

  • User Entity에 OAuthId 및 provider 추가
  • 구글 로그인 시 코드와 Access Token을 받는 GoogleOAuthService 클래스 추가
  • UserService에서 oauthId로 회원가입 및 로그인 기능 추가
  • AuthController에서 Access Token 및 Refresh Token을 헤더에 담아 응답

Feat: 추가 - 토큰 생성 및 인가 처리 기능 추가 - b8c59e9

  • jwt 토큰을 생성 및 유효성 검사를 위한 클래스 추가
  • 이전 userId를 사용하던 부분을 토큰을 사용하도록 변경

Feat: 수정 - word controller에 인가 처리 intercepter 추가 - c36e791

  • word controller도 인가 허용된 유저만 접근 할 수 있도록 변경
  • 허용되지 않은 경우 AuthException 호출하도록 변경

Feat: 추가 - Reissue 메소드 구현 - 88802d2

  • 앱에서 Access Token이 만료되었을 때, 호출할 함수
  • 유효한 Refresh Token이 존재하고 DB의 토큰과 일치할 경우 새로운 Access Token 발급
  • ExpiredJwtException 삭제

Feat: 추가 - 인가 확인용 API 추가 - ac231f2

  • 앱 실행시 토큰이 유효한지 확인하기 위한 API

Fix: 추가 - exposedHeaders에 토큰 명 추가 - 4aa7db2

  • 프론트에서 헤더를 꺼내 사용할 수 있도록 exposedHeaders에 'access-token'과 'refresh-token' 추가

테스트 체크리스트

  • 회원가입
  • 기존 회원 로그인
  • 토큰 발급
  • 토큰 재발급 성공: refresh token이 유효하고 DB와 일치
  • 토큰 재발급 실패: refresh token이 유효하지 않거나 DB와 불일치
  • AuthInterceptor에서 인가 허용
  • AuthInterceptor에서 인가 불허
  • 추가된 모든 API 통신 확인
  • 프론트에서 header exposed 확인

코드 리뷰시 참고 사항

  • WebClient와 JPA를 함께 사용 시에 Non-Blocking의 장점이 사라지기 때문에 RestTemplate을 사용해서 HTTP 통신을 구현하였습니다.
  • 작성을 생략한 커밋이 이미 변경된 WebClient로 구현한 코드에 해당합니다.
  • 유저의 실제 이름보다 임의 닉네임을 부여하는 게 낫다고 판단해서 임의로 작성했습니다. (UserServiceImpl.java)

사진 첨부[선택]

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants