간펴니
간편 자바프로그래밍
간펴니
전체 방문자
오늘
어제
  • 전체보기 (185)
    • 알고리즘 (2)
    • JAVA (69)
      • 이펙티브 자바 (47)
      • JAVA 병렬프로그래밍 (5)
      • 자바 (17)
    • SPRING (60)
      • Spring (12)
      • IceWater Community (37)
      • Homme Shop (10)
      • 토비의 스프링 (1)
    • SPRING BOOT (4)
      • WhiteRecord (7)
    • 오류 (9)
    • DB (10)
      • ORACLE (5)
      • MYSQL (1)
      • MYBATIS (4)
      • JPA (0)
      • 대용량 데이터 베이스 (0)
      • SQL (0)
    • FRONT (8)
      • JSP (2)
      • JavaScript (2)
      • Jquery (3)
      • Thymeleaf (1)
    • AWS (6)
    • JNI (10)
    • 회고 (0)
    • MQ (0)
    • Radis (0)
    • Git (0)
    • Docker (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 컨셉 변경

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
간펴니

간편 자바프로그래밍

[스프링] 회원정보수정 - 회원탈퇴 (ajax)
SPRING/IceWater Community

[스프링] 회원정보수정 - 회원탈퇴 (ajax)

2021. 9. 25. 00:16
728x90

이번엔 회원탈퇴이다.

 

[스프링] 회원정보수정 - 비밀번호 (ajax) :: 간편 웹프로그래밍 (tistory.com)

 

[스프링] 회원정보수정 - 비밀번호 (ajax)

저번 글에서 회원 정보 수정 아이디와 이메일을 구현했다. 비밀번호도 세션값의 계정ID를 통해 ajax로 유효성검사를 한다. 회원가입시 비밀번호는 암호화되서 DB에 저장되기 때문에, 암호화 된 비

kimfk567.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와 맞는지 확인하고

삭제로직을 실행한다.


결과

 

01234
슬라이드쇼 5장

  1. 회원탈퇴뷰
  2. 비밀번호체크
  3. 비밀번호가 세션의 ID와 맞을시
  4. 성공
  5. 동일아이디로 로그인 안됨( DB에서 삭제 완료)

 

 

728x90
저작자표시 (새창열림)

'SPRING > IceWater Community' 카테고리의 다른 글

[스프링] 공지사항 구현  (0) 2021.09.30
[스프링] 추천기능 구현 (OKKY사이트 추천기능 참고)  (4) 2021.09.28
[스프링] 회원정보수정 - 비밀번호 (ajax)  (1) 2021.09.24
[스프링] 회원정보수정 - 닉네임,이메일 (ajax)  (0) 2021.09.24
[스프링]비밀번호 찾기 구현  (1) 2021.09.24
    'SPRING/IceWater Community' 카테고리의 다른 글
    • [스프링] 공지사항 구현
    • [스프링] 추천기능 구현 (OKKY사이트 추천기능 참고)
    • [스프링] 회원정보수정 - 비밀번호 (ajax)
    • [스프링] 회원정보수정 - 닉네임,이메일 (ajax)
    간펴니
    간펴니
    개발공부 기록하는 곳

    티스토리툴바