암호화된 비밀번호를 비교하기 위해서는 passwordEncoder.matches() 메서드를 사용해야 합니다.
해당 메서드는 Spring Security에서 제공하는 PasswordEncoder 인터페이스의 일부입니다.
boolean isMatch = passwordEncoder.matches(rawPassword, encodedPassword);
rawPassword는 사용자가 입력한 평문 비밀번호입니다.
encodedPassword는 데이터베이스에 저장된 암호화된 비밀번호입니다.
반환값은 두 비밀번호가 일치하면 true, 일치하지 않으면 false입니다.
public SignUpResponseDto signUp(SignUpRequestDto requestDto) {
String id = requestDto.getId();
String password = requestDto.getPassword();
String checkPassowrd = passwordEncoder.encode(requestDto.getCheckPassword());
String name = requestDto.getName();
String email = requestDto.getEmail();
String nickname = requestDto.getNickname();
String profile = requestDto.getProfileImage();
//ID 중복확인
duplicatedId(id);
//닉네임 중복확인
duplicatedNickName(nickname);
//비밀번호 재입력 및 확인
checkPassword(password, checkPassowrd);
String encodePassword = passwordEncoder.encode(password);
private void checkPassword(String password, String checkPassword){
if(!passwordEncoder.matches(password, checkPassword)){
throw new MismatchException(ErrorType.MISMATCH_PASSWORD);
}
}
checkPassword 메서드에서 password를 평문, checkPassword는 암호화된 값으로 받아와서 사용한 뒤, 다시 평문인 password를 암호화시키면 통과~