todo 프로젝트의 첫 번째 기능인 회원가입 기능이다.
유저의 정보를 담기 위해 User, UserRepository를 생성하고 유저와 관련된 기능들은 UserService, UserController를 이용하여 구현한다.
public void signup(UserRequestDto userRequestDto) {
String username = userRequestDto.getUsername();
String password = passwordEncoder.encode(userRequestDto.getPassword());
// 회원 중복 확인
if (userRepository.findByUsername(username).isPresent()) {
throw new IllegalArgumentException("이미 존재하는 유저 입니다.");
}
// 사용자 등록
User user = new User(username, password);
userRepository.save(user);
}
유저의 정보(이름, 비밀번호)를 받을 때, 비밀번호는 Encoder를 이용하여 감싸주어야한다.
이때 PasswordEncoder를 이용하는데, PasswordEncoder은 spring security의 인터페이스 객체로 @Configuration을 지정해준 webSecurityConfig에 따로 구현한다.
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
BCryptPasswordEncoder()를 이용하여 암호화한다.
@PostMapping("/signup")
public ResponseEntity<Object> signup(@Valid @RequestBody UserRequestDto userRequestDto) {
try {
userService.signup(userRequestDto);
} catch (IllegalArgumentException e) {
return ResponseEntity.badRequest().
body(new CommonResponseDto("중복된 username 입니다.", HttpStatus.BAD_REQUEST.value()));
}
// 정상적으로 생성되었을때의 응답
return ResponseEntity.status(HttpStatus.CREATED.value())
.body(new CommonResponseDto("회원가입 성공", HttpStatus.CREATED.value()));
}
UserController에 성공했을 때와 예외처리를 구현한다.

