반응형
문제 상황
앱을 개발하는 과정에서 로그인을 오랜 시간 유지 시키기 위해 spring_session 테이블에 저장되는 expiry_time을 변경해야 했다.
기본 값이 30분이었기 때문에 앱에서 로그인을 유지하기에는 시간이 매우 짧다고 생각했고 이를 더 길게 늘리고자 했다.
그래서 하단의 코드를 application.yml에 작성하여 세션 시간을 변경하고자 했다.
spring:
session:
timeout: 2592000
하지만 위처럼 코드를 변경하여 다시 스프링 빌드를 하고 로그인 API를 실행시켰음에도 불구하고 expiry_time이 변경되지 않았다. 나는 이를 해결하고자 노력했으며, 노력하는데 꽤 오랜시간이 걸렸다... (문제를 해결하는 과정에서 멘토님의 도움을 받았으며, 공식문서를 꼭 읽어보자라는 생각을 하게 됐다.)
해결 방법
사실 정말 단순한 문제였다. Application.java 파일에 다음과 다음 어노테이션이 붙어 있어 발생한 문제였다.
@EnableJdbcHttpSession
이 어노테이션을 작성하면 springSessionRepositoryFilter라는 Spring bean이 생성되게 되고 Spring Session에서 지원하는 HttpSession을 대체하게 된다.
위 코드로 인해 filter가 생성되면서 application.yml에 작성한 timeout을 오버라이드 한 것이다.
내가 application.yml에 작성한 timeout 값이 아닌 @EnableJdbcHttpSession의 기본 timeout인 30m이 적용된 것 이었다.
참고 자료
반응형
'Java > Spring' 카테고리의 다른 글
[Spring] request.getSession()과 request.getSession(false)의 차이를 알아보자. (0) | 2023.11.14 |
---|---|
[Spring] 로그인과 무관한 API 호출 시 Session이 발급되는 현상 (0) | 2023.11.14 |
[Spring] server.servlet.session.timeout과 spring.session.timeout의 차이 (0) | 2023.10.13 |
[Spring] OAuth2 소셜 로그인 후 Postman에서 Session 설정하기 (0) | 2023.09.30 |
[Spring] Spring Security에서 발생한 403 Forbidden 에러 처리 (0) | 2023.09.26 |