public ResponseEntity<MsgResponseDto> profileUpdateDto ()return ResponseEntity.ok().body(new MsgResponseDto("프로필 수정 성공", HttpStatus.CREATED.value()));번째 인자로 암호화되지 않은 비밀번호를, 두 번째 인자로는 암호화된 비밀번호를 받아 비교
if (passwordEncoder.matches(passwordRequestDto.getUserPassword(), user.getUserPassword()))
암호화 되지 않은 비밀번호 passwordRequestDto.getUserPassword()
암호화 된 비밀번호 user.getUserPassword()
입력된 비밀번호와 현재 사용자의 암호화된 비밀번호가 일치하지 않는지를 확인하는 조건문
왼쪽 자리는 입력된 비밀번호이고, 오른쪽 자리는 현재 사용자의 암호화된 비밀번호
passwordEncoder.matches() 메서드는 첫 번째 인자로 입력된 비밀번호를, 두 번째 인자로는 현재 사용자의 암호화된 비밀번호를 받아 비교
왼쪽 자리인 profileUpdateDto.getUserPassword()는 입력된 비밀번호이고, 오른쪽 자리인 userDetails.getPassword()는 현재 사용자의 암호화된 비밀번호
잘못 작성하여 인한 혼돈…. 왼쪽이 암호화 된 비밀번호, 오른쪽이 암호화 되지 않은 비밀번호로 잘못 작성했었다
passwordHistories.get(i)를 통해 passwordHistories 리스트에서 i번째 인덱스에 위치한 PasswordHistory 객체를 가져옴public Boolean checkPassword(User user, PasswordRequestDto passwordRequestDto) {
if (!passwordEncoder.matches(passwordRequestDto.getUserPassword(), user.getUserPassword())) {
return false;
}
return true;
}
// 수정 페이지로 넘어가기 전 비밀번호 확인백엔드만 구현하기 때문에 updateProfile에 넣어주기…
if (!passwordEncoder.matches(profileUpdateDto.getUserPassword(), userDetails.getPassword())) {
throw new IllegalArgumentException("비밀번호 인증에 실패했습니다.");
}
passwordEncoder.matches() 메서드는 첫 번째 인자로 입력된 비밀번호를, 두 번째 인자로는 현재 사용자의 암호화된 비밀번호를 받아 비교
따라서 비교하고자 하는 암호화된 비밀번호는 두 번째 인자로 전달되어야 함
@PostMapping("/check-password")
public Boolean checkPassword (@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestBody PasswordRequestDto passwordRequestDto) {
return userService.checkPassword(userDetails.getUser(),passwordRequestDto);
}package com.sparta.second.dto;
import lombok.Getter;
@Getter
public class PasswordRequestDto {
private String userPassword;
}