使用Redis的Spring会话 - server.session.timeout无效

时间:2018-03-19 20:24:21

标签: spring session redis timeout spring-session

我按照此文档在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中正确设置会话超时?

3 个答案:

答案 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公共属性有两个属性,两个属性当前都是活动的而不是已弃用。

Springboot common properties

对于春季会议:

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)