session은 생성할때마다 메모리를 사용하는데, session.invalidate()를 호출해서 삭제하지 않으면 계속 메모리가 쌓이게 되어 나중엔 메모리 초과를 유래한다.(보통 로그아웃 누르지 않고 브라우저 종료할때)
세션은 기본적으로 메모리에 생성되는데, 메모리의 크기가 무한하지 않기 때문에 꼭 필요한 경우만 생성해서 사용해야 한다. (10만명의 사용자가 로그인하면 10만개의 세션이 생성되는 것임)
그러기 위해선 종료 시점을 정해야 하는데, 어떻게 정하면 좋을까?
가장 단순하게 생각해보면, 세션 생성 시점으로부터 30분 정도로 잡으면 될 것 같다. 그런데 문제는 30분이 지나면 세션이 삭제되기 때문에, 가령 게임을 하다가 30분이 지나면 게임이 꺼지게 될 것이다.
그래서 더 나은 대안은 세션 생성 시점이 아니라 사용자가 서버에 최근에 요청한 시간을 기준으로 30분 정도를 유지해주는 것이다.
이렇게 하면 사용자가 서비스를 사용하고 있으면, 세션의 생존 시간이 30분으로 계속 늘어나게 된다.
HttpSession은 이 방식을 사용한다.
세션 타임아웃 설정
스프링 부트로 글로벌 설정
application.properties에 아래 코드를 추가해준다. 60초, 기본은 1800(30분)
server.servlet.session.timeout=60
원하는 시간(초)를 입력하면 된다.
'Languages | Frameworks > Spring' 카테고리의 다른 글
@Autowired, @Component, @Service, @Repository 등 스프링 어노테이션에 관해.. (0) | 2022.11.02 |
---|---|
[Springboot] Spring-security 적용기(1) - 일반로그인 (0) | 2022.10.25 |
[Spring] jsessionid를 url에 노출안시키기(쿠키를 통해서만 세션 유지) (0) | 2022.06.02 |
Cookie를 사용한 로그인/로그아웃(세션쿠키) + 보안 (0) | 2022.05.30 |
[Java] 순서대로 저장, 출력하는 HashMap - LinkedHashMap (0) | 2022.05.02 |