728x90
이번엔 회원탈퇴이다.
[스프링] 회원정보수정 - 비밀번호 (ajax) :: 간편 웹프로그래밍 (tistory.com)
이전에 작성한 로직과 아주 비슷하다.
전글에서 만들어놓은 비밀번호 유효성검사를 그대로 사용하며,
update와 delete 쿼리의 차이, 프론트에서 약간의 차이만 있을뿐 동일한 로직을 사용해서
설명은 간단하게 생략하도록 하겠다.
Mapper.xml
<delete id="delete">
delete from MP_MEMBER WHERE MEMBER_ID = #{memberId}
</delete>
DAO, DAOImpl
public void delete(String memberId)throws Exception;
@Override
public void delete(String memberId)throws Exception{
sqlsession.delete("memberMapper.delete", memberId);
}
Service,ServiceImpl
public void delete(String memberId)throws Exception;
@Override
public void delete(String memberId)throws Exception{
memberDAO.delete(memberId);
}
Controller
@RequestMapping(value="/deleteView", method=RequestMethod.GET)
public String deleteView() throws Exception{
return "/member/deleteView";
}
@RequestMapping(value="/delete", method=RequestMethod.POST)
public String delete(String memberId,RedirectAttributes rttr,HttpSession session)throws Exception{
memberService.delete(memberId);
session.invalidate();
rttr.addFlashAttribute("msg", "이용해주셔서 감사합니다.");
return "redirect:/member/loginView";
}
@RequestMapping(value="/pwCheck" , method=RequestMethod.POST)
@ResponseBody
public int pwCheck(MemberVO memberVO) throws Exception{
String memberPw = memberService.pwCheck(memberVO.getMemberId());
if(memberVO == null || !BCrypt.checkpw(memberVO.getMemberPw(), memberPw)) {
return 0;
}
return 1;
}
전 글인 비밀번호변경에서 구현해놓은 비밀번호유효성검사 컨트롤러를 같이 사용한다.
삭제로직도 변경로직과 동일하다.
deleteView.jsp
<script type="text/javascript">
$(document).ready(function(){
$("#deletee").on("click", function(){
if($("#memberPw").val()==""){
alert("비밀번호를 입력해주세요");
$("#memberPw").focus();
return false
}
if($("#memberPw2").val()==""){
alert("비밀번호 확인을 입력해주세요");
$("#memberPw2").focus();
return false
}
if ($("#memberPw").val() != $("#memberPw2").val()) {
alert("비밀번호가 일치하지 않습니다.");
$("#memberPw").focus();
return false;
}
$.ajax({
url : "/member/pwCheck",
type : "POST",
dataType : "json",
data : $("#deleteForm").serializeArray(),
success: function(data){
if(data==0){
alert("비밀번호를 확인해주세요.");
return;
}else{
if(confirm("탈퇴하시겠습니까?")){
$("#deleteForm").submit();
}
}
}
})
});
})
</script>
<form action="/member/delete" method="post" id="deleteForm" name="deleteForm">
<input type="hidden" id="memberId" name="memberId" value="${login.memberId}">
<div class="col-sm-8 col-sm-offset-2">
<div class="panel panel-default panel-margin-10">
<div class="panel-body panel-body-content text-center">
<p class="lead">회원탈퇴를 하려면 비밀번호를 입력해주세요.</p>
<div class="form-group">
<input type="password" id = "memberPw" name="memberPw" class="form-control form-control-inline text-center" placeholder="비밀번호" />
</div>
<div class="form-group">
<input type="password" id="memberPw2" name="memberPw2" class="form-control form-control-inline text-center" placeholder="비밀번호 확인" />
</div>
<button type="button" id="deletee" name="delete" class="btn btn-primary">회원탈퇴</button> <a href="/member/infoView" class="btn btn-default">취소</a>
</div>
</div>
</div>
</form>
비밀번호 변경 로직과 동일하게 input hidden으로 세션의 ID값을 가져오고,
입력받은 password를 프론트에서 유효성검사 후 , 비밀번호가 세션의 ID와 맞는지 확인하고
삭제로직을 실행한다.
결과
- 회원탈퇴뷰
- 비밀번호체크
- 비밀번호가 세션의 ID와 맞을시
- 성공
- 동일아이디로 로그인 안됨( DB에서 삭제 완료)
728x90
'SPRING > IceWater Community' 카테고리의 다른 글
[스프링] 공지사항 구현 (0) | 2021.09.30 |
---|---|
[스프링] 추천기능 구현 (OKKY사이트 추천기능 참고) (4) | 2021.09.28 |
[스프링] 회원정보수정 - 비밀번호 (ajax) (0) | 2021.09.24 |
[스프링] 회원정보수정 - 닉네임,이메일 (ajax) (0) | 2021.09.24 |
[스프링]비밀번호 찾기 구현 (1) | 2021.09.24 |