🔍 진행한 작업 요약
1️⃣ 소셜 로그인 기능 구현 (OAuth2)
- spring-security-oauth2-client 사용
- Kakao / Naver 로그인 분기 처리 (registrationId 기준)
- 유저 정보 매핑용 DTO (KakaoUserInfoResponse, NaverUserInfoResponse) 작성
2️⃣ 사용자 등록 및 조회 로직 개선
- socialId + socialType 기준으로 유저 검색
- 같은 이메일로 다른 소셜 로그인 시 예외 발생 처리
- UserRepository.validateSocialJoinEmail() 도입
3️⃣ JWT 발급 및 Redis 저장
- 로그인 성공 시 AccessToken, RefreshToken 발급
- RefreshToken은 Redis에 RT:{userId} 형식으로 저장
- 기존 StringRedisTemplate 사용 → RefreshTokenService로 책임 분리 리팩토링
4️⃣ 예외 처리 및 인증 흐름 점검
- 이메일 UNIQUE 제약 유지
- 중복된 이메일로 소셜 로그인 시도 시 UserException 발생
- 인증 예외로 빠지지 않도록 전역 예외처리 흐름 확인
5️⃣ 배운 점
- 소셜 로그인 시 이메일 중복 처리를 어떻게 해야 하는지 명확하게 정의
- JWT 기반 인증에서 Redis를 활용해 토큰 무효화 및 재발급 전략 구성
- OAuth2UserService와 AuthenticationSuccessHandler 커스터마이징으로 인증 흐름 제어
- UserRepository에 도메인 정책을 위임하여 유연하고 재사용성 높은 구조로 리팩토링
6️⃣ 마무리
- 회원가입 → 소셜 로그인 연동 → JWT 발급 → Redis 저장까지 완전 연결
- 로그인/회원가입 예외 케이스도 안전하게 방어
'TIL' 카테고리의 다른 글
| [250425] 배달어플 알림(SSE) + 토큰 쿠키 리팩토링 (2) | 2025.04.25 |
|---|---|
| [240424] 회원 기능 테스트 코드 (2) | 2025.04.24 |
| [250422 TIL] 배달어플 JWT 회원 기능 초본 (2) | 2025.04.22 |
| [250416] 스프링 심화 과제 회고 (2) | 2025.04.16 |
| [250414 TIL] 뉴스피드 KPT (2) | 2025.04.14 |