我按照以下文档在我的 Spring 引导应用程序中设置会话: https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html
应用程序属性
spring.session.store-type=redis
server.session.timeout=10
发送请求后,我在 redis 中看到以下记录:
127.0.0.1:6379> keys *
1) "spring:session:sessions:4b524c1e-e133-4d04-8b5b-40ffc3685af3"
2) "spring:session:sessions:expires:c1e2792f-f001-4a02-b812-39ab68f719ea"
3) "spring:session:sessions:expires:4b524c1e-e133-4d04-8b5b-40ffc3685af3"
4) "spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:105121963489487663346"
5) "spring:session:expirations:1521492480000"
我希望这些记录在 10 秒后消失(因为 server.session.timeout 属性(,但即使在几分钟后数据也会保留。
如何在春季会话中正确设置会话超时?
您正在使用已弃用的server.session.timeout
,该在 Spring Boot 2.0 中已替换为 server.servlet.session.timeout
。随着我针对您的示例存储库打开的 PR 的更改,所需的会话超时已正确应用。
请花点时间熟悉 Spring Boot 2.0 迁移指南,并考虑使用 spring-boot-properties-migrator
模块。
根据 Vedran 的答案并不完全正确,因为 Springboot 公共属性具有这两个属性,这两个属性当前都处于活动状态且未弃用。
弹簧靴通用属性
春季课程:
spring.session.timeout= # Session timeout. If a duration suffix is not specified, seconds will be used.
对于网络用户
网站属性嵌入式服务器配置(服务器属性(
server.servlet.session.timeout= # Session timeout. If a duration suffix is not specified, seconds will be used.
我也遇到了这个问题,但不幸的是,我无法通过设置"spring.session.timeout"和"server.servlet.session.timeout"来有效控制会话超时。我的解决方案是通过注释配置会话超时。
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 30)