회원정보를 수정하거나 로그인할때 비밀번호가 일치하는지 확인하는 로직이다. 민감한 정보를 확인할 때 많이 쓰인다.
@RequestMapping("/CheckPassword")
public ModelAndView checkPassword(String userid, String inputPassword) {
// DB에서 사용자 정보 조회
UserVo user = userMapper.getUser(userid);
ModelAndView mv = new ModelAndView();
// 입력된 비밀번호가 null이거나 비어있는 경우
if (inputPassword == null || inputPassword.isEmpty()) {
mv.setViewName("users/checkPassword1");
return mv;
}
// 입력된 비밀번호와 DB의 비밀번호를 비교
if (user.getPasswd().equals(inputPassword)) {
// 비밀번호가 일치하면 수정 페이지로 이동
mv.setViewName("redirect:/Users/UpdateForm?userid=" + userid);
} else {
// 비밀번호가 틀리면 오류 메시지와 함께 비밀번호 확인 페이지로 다시 이동
mv.setViewName("users/checkPassword");
mv.addObject("error", "비밀번호가 일치하지 않습니다.");
}
return mv;
}
- 매개변수: 요청으로부터 userid와 inputPassword를 받는다.
- 비밀번호가 일치하지 않는 경우, users폴더의 checkPassword을 html로 보여주고, 비밀번호가 일치하지 않는다는 오류 메시지를 추가한다.userid는 히든 필드로 전송되고, 비밀번호 입력 필드는 inputPassword라는 이름을 가진다.
💡 // 입력된 비밀번호가 null이거나 비어있는 경우
if (inputPassword == null || inputPassword.isEmpty()) {
mv.setViewName("users/checkPassword1");
return mv;
}
이 부분을 안넣으면 비밀번호 체크화면을 키자마자 바로 "비밀번호가 일치하지 않습니다." 오류가 뜨는데, 처음에는 왜 이렇게 되는지 몰라서 좀 헤메었다. 그런데 inputPassword을 sysout 했을때 null이 먼저 뜨길래 위 로직을 추가했다. 계속 쳐다보고 있는다고 해결되는 것도 없고 한숨 돌리고 나서야 어떻게 수정하면 될지 보였다.
<main>
<h2>비밀번호 확인</h2>
<form action="/Users/CheckPassword" method="POST">
<input type="hidden" name="userid" value="${param.userid}" />
<table>
<tr>
<td>비밀번호</td>
<td><input type="password" name="inputPassword" required /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="확인" id="check"/>
</td>
</tr>
</table>
</form>
<script>
// 서버에서 전달된 error 메시지가 있을 경우 alert로 출력
<% if (request.getAttribute("error") != null) { %>
alert("<%= request.getAttribute("error") %>");
<% } %>
</script>
</main>
- userid가 없으면 서버는 어떤 사용자의 비밀번호를 확인해야 하는지 알 수 없으므로, hidden으로 불러온다
- error속성을 불러와서 비밀번호가 일치하지 않을 경우 error메시지를 출력한다.
'SPRING' 카테고리의 다른 글
[spring] Dao와 Service (2) | 2024.11.04 |
---|---|
[Spring] 페이징(Pagination) (0) | 2024.10.20 |
[spring] 회원가입 - 아이디 중복 체크하기 (0) | 2024.10.13 |
[spring] 파라미터 다루기 (0) | 2024.10.10 |
[spring]스프링 부트 MVC구조 (3) | 2024.10.08 |