[FEAT] 소셜 로그인 API 구현#60
Conversation
yeonie0309
left a comment
There was a problem hiding this comment.
간단한 리뷰 남겼습니다 확인 부탁드립니다!
| @Transactional | ||
| public AuthResDTO.Token completeSocialSignup(AuthReqDTO.SocialSignupComplete request) { | ||
| SocialSignupTokenPayload payload = socialSignupTokenService.getPayload(request.temporaryToken()); | ||
|
|
There was a problem hiding this comment.
temporaryToken 검증 후 바로 SocialAccount를 저장하고 있는데, 동일한 temporaryToken으로 거의 동시에 요청이 들어오는 경우 두 요청 모두 토큰 검증을 통과한 뒤 SocialAccount를 저장할 가능성이 있어 보입니다. 현재는 회원가입 완료 후 토큰을 삭제하고 있지만 그 전에 동일 소셜 계정 존재 여부를 한 번 더 확인하는 로직이 있으면 조금 더 안전하게 처리할 수 있을 것 같습니다!
| - --character-set-server=utf8mb4 | ||
| - --collation-server=utf8mb4_unicode_ci | ||
| - --default-time-zone=Asia/Seoul | ||
| - --defau아lt-time-zone=Asia/Seoul |
There was a problem hiding this comment.
이 부분 오타가 있습니다 수정 부탁드립니다!
yangjiae12
left a comment
There was a problem hiding this comment.
실제 소셜 로그인 성공 케이스도 카카오/네이버 Developers에서 발급받은 accessToken으로 미리 테스트해보면 좋을 것 같습니다. 그리고 Refresh Token은 재발급 및 로그아웃 처리를 위해 후속 작업에서 Redis로 관리할 예정인지도 궁금합니다!
There was a problem hiding this comment.
현재 AuthService가 구현체 역할까지 함께 하고 있는데, 팀 컨벤션에 맞춰 AuthService 인터페이스와 AuthServiceImpl로 분리해도 좋을 것 같습니다.
| ); | ||
| } | ||
|
|
||
| private AuthResDTO.SocialLogin createNewSocialLoginResponse(SocialUserInfo socialUserInfo) { |
There was a problem hiding this comment.
createExistingSocialLoginResponse()와 createNewSocialLoginResponse()의 응답 DTO 생성 로직은 AuthConverter로 분리하면 서비스가 비즈니스 로직에 조금 더 집중할 수 있을 것 같습니다.
📌 PR 설명
accessToken기반 로그인 흐름을 구현했습니다.provider + providerId기준으로 조회한 뒤 서비스Access Token/Refresh Token을 발급하도록 처리했습니다.temporaryToken을 발급하고 추가 프로필 작성 단계로 분기하도록 처리했습니다.User및SocialAccount저장 흐름을 구현했습니다.temporaryToken은 Redis에 10분 TTL로 저장하도록 처리했습니다.docker-compose.yml에 Redis 서비스를 추가했습니다.🔗 연관된 이슈
Resolves: #58
📝 리뷰 요구사항
temporaryToken저장을 위해 Redis를 사용하도록 구성했는데, 로컬 개발 환경 구성 방식이 적절한지 확인 부탁드립니다.💻 테스트 결과
AUTH4011응답 확인AUTH4003응답 확인소셜 로그인 추가 프로필 작성 API
소셜 로그인 API