spring / 회원가입 기능 구현

kongta2·2023년 11월 20일

todo 프로젝트의 첫 번째 기능인 회원가입 기능이다.

유저의 정보를 담기 위해 User, UserRepository를 생성하고 유저와 관련된 기능들은 UserService, UserController를 이용하여 구현한다.

UserService - signup

    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에 따로 구현한다.

WebSecurityConfig - PasswordEncoder

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

BCryptPasswordEncoder()를 이용하여 암호화한다.

UserController - signup

    @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에 성공했을 때와 예외처리를 구현한다.

Postman을 이용한 기능 구현 확인

  1. 회원가입 성공
  2. 중복 예외 처리
profile
2025.04.01~

0개의 댓글