[스프링부트 회원 프로젝트] 01_개발환경 소개(springboot, mysql, jpa, login)
## 파일 구조
src/main/java/com/sofly/core ├── domain │ └── user │ ├── entity │ │ └── User.java ← 기존 │ ├── repository │ │ └── UserRepository.java │ └── service │ └── UserService.java │ └── global ├── security │ ├── SecurityConfig.java ← Security 전체 설정 │ ├── jwt │ │ ├── JwtTokenProvider.java ← 토큰 생성 · 검증 │ │ ├── JwtAuthenticationFilter.java ← 요청마다 토큰 검사 │ │ └── JwtProperties.java ← secretKey, expiration 바인딩 │ └── oauth2 │ ├── CustomOAuth2UserService.java ← 제공자별 유저 정보 파싱 │ ├── OAuth2AuthenticationSuccessHandler.java │ ├── OAuth2AuthenticationFailureHandler.java │ ├── userinfo │ │ ├── OAuth2UserInfo.java ← 인터페이스 │ │ ├── GoogleUserInfo.java │ │ ├── KakaoUserInfo.java │ │ └── NaverUserInfo.java │ └── RefreshToken.java ← Redis 엔티티 │ └── auth ├── controller │ └── AuthController.java ← /api/auth/refresh, /api/auth/logout ├── service │ └── AuthService.java └── dto ├── TokenResponse.java └── RefreshTokenRequest.java
---
구현 순서는 이렇게 가는 게 좋아요.
JwtProperties → JwtTokenProvider → RefreshToken (Redis) → OAuth2UserInfo 인터페이스 + 제공자별 구현체 3개 → CustomOAuth2UserService → OAuth2AuthenticationSuccessHandler → OAuth2AuthenticationFailureHandler → JwtAuthenticationFilter → SecurityConfig → UserRepository / UserService → AuthController (refresh, logout)