使用 Redis 的 Spring Session - server.session.timeout 不起作用



我按照以下文档在我的 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)

相关内容

  • 没有找到相关文章

最新更新