password암호화

sanggyu·2023년 3월 12일
0

Spring

목록 보기
1/2
    @Transactional
    public ResponseEntity<SecurityExceptionDto> signup(SignupRequestDto signupRequestDto) {
        String username = signupRequestDto.getUsername();
        String password = passwordEncoder.encode(signupRequestDto.getPassword());

        // 회원 중복 확인
        Optional<User> found = userRepository.findByUsername(username);
        if (found.isPresent()) {
            throw new CustomException(ErrorCode.NOT_FOUND_USER);
        }
        // 사용자 ROLE 확인
        UserEnum role = UserEnum.USER;
        if (signupRequestDto.isAdmin()) {
            if (!signupRequestDto.getAdminToken().equals(ADMIN_TOKEN)) {
                throw new IllegalArgumentException("관리자 암호가 틀려 등록이 불가능합니다.");
            }
            role = UserEnum.ADMIN;
        }

            User user = new User(signupRequestDto, role);
            userRepository.save(user);

            SecurityExceptionDto securityExceptionDto = new SecurityExceptionDto("회원가입 성공!", HttpStatus.OK.value());
            return ResponseEntity.status(HttpStatus.OK).body(securityExceptionDto);
        }

강의를 보며 UserService에서 비밀번호 암호화를 딱!!! 했는데 패스워드가 암호화가 되지 않고 그대로 DB에 저장이 되버렸다..
그래서 코드를 살펴보니
반환 값이 ResponeseEntity라 문제가 발생한 것 같았다

처음에는 서비스 단에서 반환값 변경없이 해결을 해보려 하다가
문득 entity에서 가능하지 않을까?? 롸??

public void hashPassword(PasswordEncoder passwordEncoder){
        this.password = passwordEncoder.encode(password);
    }

바로 repositor.save하기 전에 서비스 단에서 불리게끔

User user = new User(signupRequestDto, role);
            user.hashPassword(passwordEncoder);
            userRepository.save(user);

수정을 했더니 DB에 암호화된 password가 딱!!!!!!!!!

이렇게 나는 또 성장을 하고 있는걸까..

0개의 댓글