什么是默认会话超时以及使用 Spring Session 和 Redis 作为后端时如何配置它

What is the default session timeout and how to configure it when using the Spring Session with Redis as the backend

我的应用程序目前使用 Spring Session 和 Redis 作为后端。

我在 official documentation 中搜索了 Spring 会话,但无法找到使用该模块时的默认会话超时时间。

此外,我不确定如何在必要时更改默认超时。

有人可以指点一下吗?

使用 redis 存储库时配置会话超时的最简单方法是

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)

或 @EnableRedissonHttpSession(maxInactiveIntervalInSeconds = 1200) 如果存在 redisson 依赖项。

当存储库中不再可用时,会话 将过期 。 可以在 RedisOperationsSessionRepositoryMapSessionRepository 上使用 setDefaultMaxInactiveInterval(int) 配置超时。默认值为 30 分钟.

如果您使用 spring 引导,那么从 1.3 版开始,它会自动将值与应用程序配置中的 server.session.timeout 属性 同步。

请注意,使用 spring 会话时的缺点之一是 javax.servlet.http.HttpSessionListener 不会被调用。

如果您需要对会话过期事件做出反应,您可以订阅 spring 应用程序的 SessionDestroyedEvent 应用程序事件。

server.session.timeout 已弃用并在 Spring Boot 2.0 中被替换为 server.servlet.session.timeout