반응형
문제 상황
현재 앱 개발을 위해 로그인 개발을 진행 중이며, 사용자 로그인 유지를 위해 세션을 이용하고 있다.
세션에는 다양한 설정 값이 있는데, 로그인 유지 시간을 바꾸기 위해 spring_session 테이블에서의 max_inactive_interval을 변경하고자 했다.
하지만 spring에서의 session의 유지 시간을 변경하는 코드가 2개가 있었으며, 어떤 코드를 application.yml 파일에 작성해야 할지 감이 잡히지 않아 공부하는 계기가 됐다.
차이점
두 코드 모두 세션 타임아웃을 설정하는 속성이라는 공통점이 있지만, 사용되는 목적이 다르다.
server.servlet.session.timeout(내장 서버의 세션)
- 내장 톰캣, 제티, 언더토우 등의 서블릿 컨테이너의 세션 타임아웃을 결정
- 기본 값은 초 단위이며, 단위(m, h)에 따라 지정할 수도 있다.
- 내장 서버의 세션의 경우 서버 메모리에 저장되어 빠르지만, 서버 재시작 시 데이터가 손실된다.
spring.session.timeout(외부 저장소의 세션)
- Spring Session은 세션 데이터를 외부 저장소(Redis 등)에 저장할 수 있도록 하는데, 이때 Spring Session이 관리하는 세션의 타임아웃을 설정하는 데 사용된다.
- 초 단위로 설정해야 한다.
- 외부 저장소의 세션의 경우 서버 외부에 저장되므로 서버 재시작에 영향을 받지 않고, 여러 서버 간에 쉽게 세션을 공유할 수 있다.
액세스 속도는 내장 서버의 메모리보다는 느리다.
결론
현재 나는 우리의 DB에 저장된 Session의 timeout을 변경하려는 상황이므로 spring.session.timeout를 변경해야 한다.
반응형
'Java > Spring' 카테고리의 다른 글
[Spring] 로그인과 무관한 API 호출 시 Session이 발급되는 현상 (0) | 2023.11.14 |
---|---|
[Spring] spring_session 테이블의 expiry_time이 변경되지 않는 문제 (0) | 2023.10.16 |
[Spring] OAuth2 소셜 로그인 후 Postman에서 Session 설정하기 (0) | 2023.09.30 |
[Spring] Spring Security에서 발생한 403 Forbidden 에러 처리 (0) | 2023.09.26 |
[JPA] Spring Data Jpa에서 객체 내 속성 참조하는 방법 (0) | 2023.09.24 |