지난 블로그에서 회원 수정 페이지를 만들었다. 이번 블로그에서는 비밀번호를 수정해보자.
1 . View 확인

회원을 통해 새로운 비밀번호를 입력받는다. 비밀번호는 DTO 를 만들어서 받기로 한다.
user/UserRequest
@Data
public static class passwordUpdateDTO{
private String password ;
}
2. Controller
@PostMapping("/user/update")
public String update(UserRequest.passwordUpdateDTO requestDTO){
//1. 인증체크 로그인여부
User sessionUser = (User) session.getAttribute("sessionUser");
if(sessionUser==null){
return "redirect:/loginForm";
}
// 2. 동일한 비밀번호를 입력했을 때 오류 페이지
if(sessionUser.getPassword().equals(requestDTO.getPassword())){
return "error/400";
}
//3. 핵심로직. 비밀번호를 받아서 update 한다.
userRepository.passwordUpdate(requestDTO,sessionUser.getId());
// 변경된 데이터를 세션에 덮어씌운다.
session.setAttribute("sessionUser",sessionUser);
return "redirect:/";
}
requestDTO 를 통해 회원이 입력한 데이터를 입력받는다.
3. Repository
@Transactional
public void passwordUpdate(UserRequest.passwordUpdateDTO requstDTO, int id) {
Query query = em.createNativeQuery("update user_tb set password = ? where id = ?");
query.setParameter(1,requstDTO.getPassword());
query.setParameter(2,id);
query.executeUpdate();
}
세션의 id 값으로 데이터를 조회해 회원이 입력한 비밀번호를 업데이트한다.

유저 정보

현재 ssar 로 로그인이 되어있다. 비밀번호는 passwordchange 로 변경했다.

DB 에도 비밀번호가 정상적으로 변경되었다.

만약 현재와 동일한 비밀번호를 입력하면 에러 페이지가 실행된다.
Share article