지석이의 일기
one tomcat 세션 유지가 안되던 사항 본문
조용히 java 프로젝트 운영중 갑자기 로그인이 안된다는 소식을 듣게됨.
로그인 해보니 자꾸 로그인 페이지로 튕기는 현상이 발견.
A페이지(로그인 페이지): 로그인정보 받음. B로 FORMSUBMIT함.
B페이지: A정보를 기반으로 AUTH체크후 session.setAttribute("UserInfo", sessionMap); 함.
이후, 유저 페이지로 전환되어야 하는데, A페이지로 전환됨.
당연히 유저페이지에서 유저 세션 체크 후 유저 세션이 없으니 A페이지로 전환되는 현상 확인.
세션이 유지 되지 않는 점을 확인.
그리하여 아래와 같은 원인 분석에 나섬
1. session.setAttribute 이후 try catch 로 session 정보가 날아간걸까?
==> 페이지 리다이렉션 직전에 session.get을 통해 정보가 셋팅이 된걸 확인
==> 문제 아님
2. 클러스터링이 문제 인가?
==> tomcat은 단순이 1개라서 문제일수가 없다.
3. 혹시 새로운 세션을 생성하는건가?
==> request.getSession(true)을 통해 새로운 세션을 만들수 있다고 하는데, 소스 검색 결과 아님.
*만일 이 문제였으면 조낸 소스 관리문제다.
4. 혹시 인터셉터나 필터에서 세션을 캐치해서 삭제하나?
==> 소스 조회 결과 아니다.
5. 쿠키가 제대로 설정이 되는가?
==> 마지막 체크 부분이다.
세션을 저장하면, 세션의 아이디 정보를 쿠키에 저장하는데...

정상적이라면 이렇게 쿠키에 저장되 어야하는데, 나의 경우 저장이 되지 않는다!..
쿠키가 저장이 되지않는다...
그 원인을 보니 나의 도메인이 https가 아니라 http이므로, web.xml에 secure 부분에 의해 쿠키 설정이 되지 않은것...

스프링의 경우
-
-
server.servlet.session.cookie.secure=false
-
이런식으로 데이터를 소스를 바꿔주고 재시작하자.
서버 관리자 놈이 뭐 보안 운운하면서 저걸 몰래 바꿔놨었다.