본문 바로가기
프로그래밍/SpringBoot

[스프링 부트 게시판] 회원 탈퇴, 로그아웃 / ajax 비동기 처리

by 소소로드 2020. 10. 23.

회원 탈퇴 / 로그아웃



1. prompt창을 이용한 회원탈퇴

회원탈퇴는 그냥 DB상 데이터를 delete하면 되므로 쉽다.
탈퇴도 사용자 입장에서는 빨리 탈퇴하고 사이트를 나가고 싶을테니까 비동기 처리로 진행한다.

memberModify.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var inputPass1 = prompt("비밀번호를 입력해주세요.");
 
    if(inputPass1 != null) {
        var trimPass1 = inputPass1.trim();
 
        if(trimPass1 != "" && trimPass1 != undefined) {            
            var inputPass2 = prompt("비밀번호를 다시 입력해주세요.");
            var trimPass2 = inputPass2.trim();
            
            if(trimPass1 == trimPass2) {
                
                var memberId = $("#memberId").val();
                var param = {"memberId":memberId, "memberPass":trimPass1}
            
                $.ajax({            
                    async: true,
                    type: 'POST',
                    data: JSON.stringify(param),
                    url: "/memberDelete",
                    dataType: "text",
                    contentType: "application/json; charset=UTF-8",
                    success: function(data) {                    
                        alert("탈퇴가 처리되었습니다.");
                        location.href="/index";
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        alert("ERROR : " + textStatus + " : " + errorThrown);
                    }            
                })    
            } else alert("비밀번호가 일치하지 않습니다.");    
        } else {
            alert("비밀번호를 제대로 입력해주세요.");
        }
    } 
cs

전 시간에 했던 ajax 비밀번호 수정처리 스크립트 밑에 이 부분을 붙인다.

prompt 기능을 이용하여 창을 하나 띄우는데 
prompt는 팝업과는 다르게 뭔가를 입력할 수 있는 창이다. 
여기서 비밀번호를 두번 입력해서 같을 때만 탈퇴가 처리된다.

prompt의 확인 버튼은 내가 입력한 값이며
취소 버튼은 null값이 디폴트 값이다.

원리는 처음 비밀번호를 입력한 inputPass1과 두번째로 입력한 inputPass2를 검증한다.
null이 아닌지, undefine이 아닌지(처음 자바스크립트를 할때 애먹은 부분)
그리고 스페이스키가 먹히기 때문에 공백을 없애는 trim()을 적용한다.
두 값이 일치하는지까지 확인하고 파라미터로 넘기면
mapper에서 아이디, 비밀번호를 또 한번 검증한다.




BoardController, BoardService, BoardMapper, BoardMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     // BoardController
    @RequestMapping(value="/memberDelete", method=RequestMethod.POST)
    public String memberDelete(@RequestBody MemberVO memberVO) throws Exception {
  if(memberVO.getMemberId() != null && memberVO.getMemberId() != "") { boardService.memberDelete(memberVO);    } 
        return "redirect:boardList";
    }
 
     // BoardService
     public void memberDelete(MemberVO memberVO) throws Exception {
        boardMapper.memberDelete(memberVO);
     }
 
     // BoardMapper
     public void memberDelete(MemberVO memberVO) throws Exception;
 
     // BoardMapper.xml
     <delete id="memberDelete" parameterType="MemberVO">
        DELETE from hello_member
        WHERE memberId = #{memberId}
        AND memberPass = #{memberPass}
    </delete>
cs

이번에는 어려운 부분이 없어서 컨트롤러까지 붙였다.


2. 로그아웃

로그아웃이야말로 엄청나게 간단하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
// BoardController
@RequestMapping(value="/logout", method=RequestMethod.GET)
    public String logout() throws Exception {
        
        return "logout";
    }
 
 
// logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<%
    session.removeAttribute("member");
    response.sendRedirect("/");
%>
</body>
</html>
 
cs

session.removeAttribute("member");  // member 세션을 제거한다.
response.sendRedirect("/"); // 제거 후 "/" 이곳으로 리다이렉트한다.



전체적인 완성작은 해당 소스를 참고
github.com/yulfsong/spring-boot-hello-project

yulfsong/spring-boot-hello-project

Contribute to yulfsong/spring-boot-hello-project development by creating an account on GitHub.

github.com