我按照此文档在Spring Boot应用程序中设置会话:https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html
application.properties
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属性),但数据在几分钟后仍然存在。
如何在Spring Sessions中正确设置会话超时?
答案 0 :(得分:1)
您使用的是已弃用的server.session.timeout
,在Spring Boot 2.0中被server.servlet.session.timeout
替换。随着PR I've opened against your sample repo的更改,正确应用了所需的会话超时。
请花些时间熟悉Spring Boot 2.0 Migration Guide并考虑使用spring-boot-properties-migrator
模块。
答案 1 :(得分:0)
根据Vedran的回答并不完全正确,因为Springboot公共属性有两个属性,两个属性当前都是活动的而不是已弃用。
对于春季会议:
spring.session.timeout= # Session timeout. If a duration suffix is not specified, seconds will be used.
适用于网络广告
WEB PROPERTIES 嵌入式服务器配置(ServerProperties)
server.servlet.session.timeout= # Session timeout. If a duration suffix is not specified, seconds will be used.
答案 2 :(得分:0)
我也遇到过这个问题,但是很遗憾,我无法通过设置“spring.session.timeout”和“server.servlet.session.timeout”来有效控制会话超时。 我的解决方案是通过注解配置会话超时时间。
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 30)