일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring
- java
- 스프링
- http
- kotlin
- pointcut
- db
- JDBC
- Spring Boot
- 알고리즘
- AOP
- jpa
- Servlet
- SpringBoot
- Proxy
- Android
- QueryDSL
- 스프링 핵심 원리
- 자바
- 인프런
- 그리디
- springdatajpa
- Thymeleaf
- transaction
- JPQL
- Greedy
- Exception
- 스프링 핵심 기능
- 백준
- 김영한
- Today
- Total
개발자되기 프로젝트
로그아웃 본문
1. 현상
현재 로그아웃을 시도하면 화면이 바뀌지 않는다.
아래와 같이 로그아웃을 클릭하면
logcalhost:8080/logout 으로 접속하고
session이 있는 경우 session을 만료시킨다. 이후 localhost:8080/으로 redirect된다.
이때 localhost:8080/ 접속 시 세션에 로그인 회원에 대한 정보가 없으면 home.html
정보가 있으면 loginHome.html을 뿌려준다.
하지만 로그아웃을 시도해도 뷰가 변경되지 않는다..
2. 원인 분석
localhost:8080/ 접속 시 처리하는 로직 중 세션 유뷰 확인 이후에 현재 세션에 담긴 정보를 찍어보자.
만약 로그아웃 시도 후 위에 작성한 로그가 남는다면, 세션 만료 처리가 되지 않아 발생하는 문제이다.
2021-10-05 21:30:41.863 INFO 1712 --- [nio-8080-exec-6] hello.blog.web.HomeController
: user id = test
log가 출력이 되었다.
현재 문제는 logout시도 시 session 만료처리가 되지 않는 것이다.
3. 문제 해결
@PostMapping("/logout")
public String logout(HttpServletRequest request){
sessionManager.expire(request);
return "redirect:/";
}
/**
* 세션 만료
*/
public void expire(HttpServletRequest request){
Cookie sessionCookie = findCookie(request, SESSION_COOKIE_NAME);
if(sessionCookie != null){
sessionStore.remove(sessionCookie.getValue());
}
logout로직을 변경해주었다. 직접 관련된 쿠키를 찾고, session에서 해당 쿠키를 삭제해준다.
4. 문제의 원인
@PostMapping("/logout")
public String logout(HttpServletRequest request){
//세션 없으면 null 반환.
HttpSession session = request.getSession(false);
if(session != null){
session.invalidate();
}
return "redirect:/";
}
문제가 발생했을 때는, logout로직에서 HttpSession을 사용했다.
lotout측에서 HttpSession을 사용하기 위해서는 로그인 시 LoginController에서 HttpSession을 만들어서 보내줬어야..
HttpSession이 아예 만들어 지지 않았으니, if(session != null) 로직을 아예 탈 수가 없었던것.....
즉 HttpSession에 대한 이해가 없이 코드를 작성함..
5. 결과
현재 로그인/로그아웃 로직은 쿠키를 단순히 서버에 보관하는 형태이다.
HttpSession을 사용하지 않는 로직으로 변경 후 정상적으로 동작한다.
6. GitHub : 211005 logout
'Project > 블로그 게시판 만들기' 카테고리의 다른 글
글 삭제하기 (0) | 2021.10.05 |
---|---|
home 버튼 추가 (0) | 2021.10.05 |
로그인 처리 (0) | 2021.10.04 |
회원가입 개발 (0) | 2021.10.04 |
도메인 모델, 연관관계 (0) | 2021.10.03 |