순서
1. 로그아웃 버튼 작성(main.jsp)
2. 로그아웃 메서드 작성(MemberController.java)
3. 테스트
1. 로그아웃 버튼 작성(main.jsp)
로그인 성공 시 등장하는 class 속성이 "menu"인 ul태그 안에 li 태그 안에 a태그를 추가합니다.
url 경로는 "/member/logout.me"로 하였습니다.(자신이 원하는 url을 작성하시면 됩니다.)
아직 서버에 해당 url메서드를 작성하지 않았기 때문에 동작은 하지 않을 것입니다.
<li><a href="/member/logout.me">로그아웃</a></li>
2. 로그아웃 메서드 작성(MemberController.java)
로그아웃은 세션에 저장되어 있는 사용자의 정보를 지우는 작업을 의미합니다.
따라서 세션을 제거하는 작업을 한 뒤 메인 페이지로 이동하도록 로직을 작성했습니다.
MemberController.java에 아래와 같이 메서드를 작성합니다.
// 로그아웃
@RequestMapping(value = "logout.me", method = RequestMethod.GET)
public String logoutMainGET(HttpServletRequest request) throws Exception {
logger.info("logoutMainGET메서드 진입");
}
세션을 제거하는 작업을 해야 하기 때문에 HttpSession타입의 session 변수 및 초기화를 합니다.
// 로그아웃
@RequestMapping(value = "logout.me", method = RequestMethod.GET)
public String logoutMainGET(HttpServletRequest request) throws Exception {
logger.info("logoutMainGET메서드 진입");
HttpSession session = request.getSession();
}
사용자의 정보를 "member"라고 네이밍 한 session을 삭제해야 합니다.
HttpSession api 문서를 보면 목적에 맞는 session을 제거할 수 있는 메서드가 2개("invalidate()", "removeAttribute()") 있습니다.
"invalidate()" 메서드의 경우 세션 전체를 무효화하는 메서드입니다.
"removeAttribute()"의 경우 특정 이름으로 네이밍 한 session 객체를 찾아 삭제하는 메서드입니다.
로그아웃을 할 경우 사용될 세션이 없기 때문에 저는 "invalidate()" 메서드를 사용하였습니다.
아래와 같이 session을 제거하는 코드와 메서드 실행 후 main페이지로 이동할 수 있도록 return문을 작성하였습니다.
// 로그아웃
@RequestMapping(value = "logout.me", method = RequestMethod.GET)
public String logoutMainGET(HttpServletRequest request) throws Exception {
logger.info("logoutMainGET메서드 진입");
HttpSession session = request.getSession();
session.invalidate();
return "redirect:/swan";
}
3. 테스트
로그인 후 메인 페이지에 접속하여 로그아웃 버튼을 테스트합니다.
'😎 STS3 Spring 쇼핑몰' 카테고리의 다른 글
STS3 쇼핑몰 프로젝트[12] 암호화된 비밀번호 찾기/임시 비밀번호 생성 (0) | 2022.08.02 |
---|---|
STS3 쇼핑몰 프로젝트[11] 아이디 찾기 (0) | 2022.08.02 |
STS3 쇼핑몰 프로젝트[9] 공용 에러 페이지 등록 및 비밀번호 암호화(2) (0) | 2022.08.01 |
STS3 쇼핑몰 프로젝트[9] 인코딩 적용 및 비밀번호 암호화(1) (0) | 2022.08.01 |
STS3 쇼핑몰 프로젝트[8] 로그인 기능 구현(페이지 데이터 처리) (0) | 2022.08.01 |