[TIL 69일 차] Sprint Mission9
오늘의 성취
1. 개발 진행 상황
- 회원가입
- 기존 회원가입 API 스펙 유지
- 회원가입 시 비밀번호 해시 처리
PasswordEncoder의BCryptPasswordEncoder구현체 활용
- 인증 - 로그인
- 로그인에 대한
SecurityFilterChain설정 추가 UserDetailsService의 구현체로DiscodeitUserDetailsService구현UserDetails의 구현체로DiscodeitUserDetails구현
- 로그인에 대한
프로젝트 요구 사항
2. 기본 요구사항
//...
4-03. 회원가입
- 회원가입 API 스펙은 유지합니다.
- API 스펙
- 엔드포인트:
POST /api/users - 요청:
Body UserCreateRequest, MultipartFile - 응답:
200 UserDto
- 엔드포인트:
- API 스펙
- 회원가입 시 비밀번호는
PasswordEncoder를 통해 해시로 저장하세요.PasswordEncoder의 구현체는BCryptPasswordEncoder를 활용하세요.
4-04. 인증 - 로그인
formLogin을 기본값으로 활성화하고, 추가된 필터를 확인해보세요.http .formLogin(Customizer.withDefaults())-
Spring Security의 formLogin 인증 흐름은 그대로 유지하면서 필요한 부분만 대체합니다.

- 이번 미션에서는 보라색 음영 처리된 5가지 컴포넌트를 대체합니다.
UserDetailsUserDetailsServicePasswordEncoder: 이전에 정의한BCryptPasswordEncoder로 대체됩니다.AuthenticationSuccessHandlerAuthenticationFailureHandler
- 각 컴포넌트의 기본 구현체가 무엇인지 디버깅해보세요.
- 이번 미션에서는 보라색 음영 처리된 5가지 컴포넌트를 대체합니다.
- 로그인을 처리할 url을
/api/auth/login로 설정하세요.http .formLogin(login -> login .loginProcessingUrl(...) ) UserDetailsService컴포넌트를 대체하세요.- 디폴트 구현체는
InMemoryUserDetailsManager입니다. -
DiscodeitUserDetailsService를 정의하세요.@Service @RequiredArgsConstructor public class DiscodeitUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { ... } }- 디스코드잇 DB에서 자체 관리하는 사용자 정보로
UserDetails객체를 생성합니다. - 구현체를 Bean으로 등록하면 자동으로 대체됩니다.
- 디스코드잇 DB에서 자체 관리하는 사용자 정보로
- 디폴트 구현체는
UserDetails컴포넌트를 대체하세요.- 디폴트 구현체는
org.springframework.security.core.userdetails.User입니다. -
DiscodeitUserDetails를 정의하세요.@Getter @RequiredArgsConstructor public class DiscodeitUserDetails implements UserDetails { private final UserDto userDto; private final String password; ... }- 인증 정보(
Principal)에 담을 수 있는 정보를 자유롭게 확장할 수 있습니다. UserDto와 비밀번호 정보를 저장하세요.
- 인증 정보(
- 앞서 정의한
DiscodeitUserDetailsService에서DiscodeitUserDetails를 생성 후 반환하세요.
- 디폴트 구현체는
//...
GitHub Repository 주소
https://github.com/JungH200000/10-sprint-mission/tree/sprint9
Leave a comment