반응형
비밀번호 변경 기능
BCrypt 라이브러리를 사용하여 비밀번호 변경 기능을 구현했습니다.
jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <form action="/changePw" method="post"> <div> <p> 기존 비밀번호 <input type="password" name="password" placeholder="기존 비밀번호를 입력"> </p> <p> 신규 비밀번호 <input type="password" name="newPassword" placeholder="8~20자리"> </p> <p> 신규 비밀번호 확인 <input type="password" name="newPasswordCheck" placeholder="8~20자리"> </p> </div> <div> <button type="submit" class="btn btn-primary">확인</button> <button type="button" onclick="location.href='/'" class="btn btn-danger">취소</button> </div> </form> | cs |
→ name 속성에 비밀번호, 새 비밀번호, 새 비밀번호 확인 속성을 줌.
dto
1 2 3 4 5 6 7 8 9 10 11 | @Data public class PasswordCheckDto { private String id; private String password; private String type; private String newPassword; privateString newPasswordCheck; } | cs |
controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @PostMapping("/changePw") public String changePwProc(PasswordCheckDto passwordCheckDto) { User principal = (User) session.getAttribute(Define.PRINCIPAL); // 비밀번호 복호화 boolean isChecked = bCryptPasswordEncoder.matches(passwordCheckDto.getPassword(), principal.getPassword()); if(isCHecked == false) { throw new CustomRestfullException("비밀번호가 틀렸습니다.", HttpStatus.BAD_REQUEST); } else { // 신규 비밀번호 암호화 처리 후 update 처리 if(passwordCheckDto.getNewPassword().equals(passwordCheckDto.getNewPassword()) { // 신규 비밀번호와 신규 비밀번호 확인이 같다면 update 처리 // encode 해야 할 비밀 번호는 NewPassword이다. String hashPw = bCryptPasswordEncoder.encode(passwordCheckDto.getNewPassword()); // 상태값 변경 - 암호화 된 비밀번호를 set 하기 passwordCheckDto.setPassword(hashPw); passwordCheckDto.setId(principal.getId()); userService.updateUserById(passwordCheckDto); } else { // 같지 않다면 예외 처리 throw new CustomRestfullException("입력하신 신규 비밀번호와 일치하지 않습니다.", HttpStatus.BAD_REQUEST); } } return "redirect:/"; } | cs |
→ update 처리 후 암호화 처리를 하려 해서 암호화가 안 된 값이 들어갔다.
순서를 바꿔 신규 비밀번호 암호화 처리 후 update 처리하니 해결이 되었다.
→ 상태값 변경을 잊지마.
반응형
'프로그래밍 > Spring Boot 프로젝트' 카테고리의 다른 글
[Spring Boot 프로젝트] 스도쿠 게임 프로그래밍 - 1 (10) | 2024.11.08 |
---|---|
항공사 플랫폼 팀 프로젝트_RestTemplate 국가 API 활용 국적 가져오기 (0) | 2023.07.18 |
항공사 플랫폼 팀 프로젝트_마이그레이션 후 쿼리문 수정 (0) | 2023.07.16 |
항공사 플랫폼 팀 프로젝트_페이지 다중 return (0) | 2023.07.16 |
항공사 플랫폼 팀 프로젝트_수정 기능 AJAX 통신 (0) | 2023.07.16 |