WEB 심화/Back-End

[Spring] Session Timeout 설정 방법

ddobuk 2023. 11. 23. 09:36

 

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. 결론적으로

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