BE전문가 프로젝트

2. User 회원가입 (Spring Secureity) 본문

SpringBoot Security

2. User 회원가입 (Spring Secureity)

원호보고서 2023. 6. 27. 00:27

UserSignupDto 생성

/**
 * @package com.example.spring_security.user.dto
 * @class   UserSignupDto
 * @brief   회원가입 Dto
 * @author  최원호
 * @date    2023.06.22
 * version  1.0
 */
public class UserSignupDto {

    @Getter
    public static class UserSignupRequestDto {

        private String email;
        private String password;
        private String nickname;

    }

    public static class UserSignupResponseDto {

        private long userId;
        private String email;
        private String password;
        private String refreshToken;
        private String userRole;

    }

}
  • 비즈니스 로직에서 사용할 Dto를 구현한다.

 

UserService생성

/**
 * @package     com.example.spring_security.user.service
 * @interface   UserServiceIMpl
 * @brief       UserService 상속 클래스
 * @author      최원호
 * @date        2023.06.22
 * version      1.0
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;
    private final BCryptPasswordEncoder bCryptPasswordEncoder;

    /**
     * @brief   user 정보 저장
     * @param   userSignupRequestDto    회원가입 요청 Dto
     */
    @Override
    @Transactional
    public void insertUser(UserSignupRequestDto userSignupRequestDto) {

        User user = User.builder()
                .email(userSignupRequestDto.getEmail())
                .password(userSignupRequestDto.getPassword())
                .nickname(userSignupRequestDto.getNickname())
                .socialType(SocialType.NONE)
                .build();

        user.passwordEncode(bCryptPasswordEncoder);

        userRepository.save(user);
    }
}

 

비밀번호 Encoding

user.passwordEncode(bCryptPasswordEncoder);
  • DB에 암호화하여 비밀번호를 저장하여 관리자도 비밀번호를 조회할 수 없도록 encoding해준다.

 

결과

password를 평문으로 API에 보내면 DB 저장시 Encoding되어 저장된다.

 

Comments