Closed hayeon17kim closed 3 years ago
기존에는 회원가입을 할 때 전화번호를 받지 않았다. 하지만 아이디 찾기를 할때 입력받을 정보가 이름밖에 없어서, 회원가입시 전화번호를 입력하도록 DB를 수정했다.
UserMapper.xml에 findID를 추가했다. 회원의 이름과 전화번호를 입력하면 해당 회원의 전화번호를 알 수 있다.
UserDao와 UserService에 findID와 관련된 메서드를 추가했다.
/WEB-INF/tiles/appJsp/auth/searchID.jsp를 추가하고 관련된 코드를 작성했다.
위의 jsp파일에서 입력 받은 정보를 가지고 회원의 아이디를 찾는다. 그리고 searchIdResult.jsp 파일을 통해 결과를 보여준다.
해당 회원의 정보를 찾을 수 없으면 결과를 찾을 수 없다는 화면을 노출한다.
입력한 정보와 일치하는 결과를 찾을 수 없을 때는 회원 정보를 찾을 수 없다는 화면을 노출한다.
이 경우에는 회원 번호를 -1로 리턴하도록 하였다.
입력한 정보와 일치하는 결과를 찾으면, 비밀번호를 재설정할 수 있도록 한다.
이 경우에는 회원 번호를 리턴하고, 이에 맞춰 비밀번호를 수정할 수 있도록 코드를 작성하였다.
searchPwdResult.jsp
<form id="updatePwd" action="updatePwd" method="post">
<input id='userNo' type='hidden' name='userNo' value='${param.userNo}'>
<div class="mb-3 row">
<label for="password" class='form-label col-sm-2 col-form-label'>비밀번호</label>
<div class="col-sm-10">
<input id='inputPassword' type='password' class="form-control" name='password' placeholder="password">
</div>
</div>
<div class="d-grid gap-2">
<button class="btn btn-primary">비밀번호 재설정</button>
</div>
</form>
AuthController.java
@PostMapping("updatePwd")
public void updatePwd(int userNo, String password) throws Exception {
userService.updatePwd(userNo, password);
}
searchPwdResult.jsp
<form id="updatePwd" action="searchPwdResult-send" method="post">
<input id='userNo' type='hidden' name='userNo' value='${param.userNo}'>
<div class="mb-3 row">
<label for="password" class='form-label col-sm-2 col-form-label'>비밀번호</label>
<div class="col-sm-10">
<input id='inputPassword' type='password' class="form-control" name='password' placeholder="password">
</div>
</div>
<div class="d-grid gap-2">
<button class="btn btn-primary">비밀번호 재설정</button>
</div>
</form>
AuthController.java
@PostMapping("searchPwdResult-send")
public void searchPwdResult(int userNo, String password) throws Exception {
userService.updatePwd(userNo, password);
return "redirect:login";
}
<form id="updatePwdForm" action="updatePwd" method="post">
<input id='userNo' type='hidden' name='userNo' value='${param.userNo}'>
<div class="mb-3 row">
<label for="password" class='form-label col-sm-2 col-form-label'>비밀번호</label>
<div class="col-sm-10">
<input id='inputPassword' type='password' class="form-control" name='password' placeholder="password">
</div>
</div>
<div class="mb-3 row">
<label for="passwordConfirm" class='form-label col-sm-2 col-form-label'>비밀번호 확인</label>
<div class="col-sm-10">
<input id="passwordConfirm" type='password' class="form-control" name='passwordConfirm'
placeholder="위의 비밀번호와 동일하게 입력">
</div>
</div>
<div class="d-grid gap-2">
<button class="btn btn-primary">비밀번호 재설정</button>
</div>
</form>
<script>
document.querySelector("#updatePwdForm").onsubmit = () => {
var inputPassword = document.querySelector("#inputPassword");
var passwordConfirm = document.querySelector("#passwordConfirm");
if (inputPassword.value.length < 8) {
alert("비밀번호를 8자 이상 입력하세요!");
return false;
} else if (inputPassword.value != passwordConfirm.value) {
alert("비밀번호가 일치하지 않습니다.");
return false;
}
};
</script>
Description
비밀번호를 잊었을 때 이메일을 이용해 비밀번호를 찾고, 이를 변경할 수 있는 기능을 추가한다.
Progress