[Spring] Session Timeout 설정 방법

 

Q1. 세션 타임아웃이란

서버와 클라이언트 사이의 연결이 일정시간 일어나지 않으면 연결 상태를 끊는 것을 의미한다.

웹에서는 장시간 자리를 비웠을 때, 자동으로 로그아웃이 되는 기능이다.

 

'작성자의 개발환경'
OS : Window
DB : Oracle

IDE : Eclipse+ Dbeaver
FrameWork : Spring
Server : Tomcat

 

 

Q2. 자바 기반 Session-Timeout 설정 방법

본 화자의 환경에 초점을 맞추어 세팅하는 방법을 작성하였다.

방법 1 : JAVA 코드를 작성하여 직접 설정한다. (우선 순위 높음) : 여기서는 초 단위로 입력받는다.

로그인하고나서 HttpSession에 세션 값이 생성되는 시점이 있다고 한다.

혹은 HttpServletRequest를 원하는 시점에 사용하여 세션 설정을 할 수 있다.

아래와 같이 javax.servlet.http.HttpSession 클래스의 setMaxInactiveInterval 메서드를 이용하면 된다.

(단, 0을 넣으면 세션이 종료되고, -1을 넣으면 세션이 영원히 유지된다고 한다)

HttpSession session = new HttpServletRequest().getSession();
session.setAttribute("UserVO", userVO);
session.setMaxInactiveInterval(3600); //세션 시간 설정 (초 단위)

 

 

방법 2 : WEB-INF/web.xml에 소스 수정. (우선 순위 중간) : 여기서는 분 단위로 입력받는다.

<session-config>
     <session-timeout>60</session-timeout> 
</session-config>

 

방법 3 : Tomcat의 conf/web.xml에 소스 수정. (우선 순위 낮음) : 여기서는 분 단위로 입력받는다.

<session-config>
     <session-timeout>60</session-timeout> 
</session-config>

 

Q3. 결론적으로

세 가지를 모두 적용했을 경우에 우선순위가 높은 순서 위주로 적용되며, 테스트를 위해서는 해당 시간동안 에이징 테스트를 위해 방치한 뒤에 실행했을 경우에 세션이 끊어지는지를 확인하면 된다.