【发布时间】:2019-08-08 23:05:07
【问题描述】:
我有一个使用 Spring Boot 1.5.13 构建的 java 应用程序,但我无法将会话超时设置为 60 分钟。 我发现 Spring 将默认会话超时设置为 30 分钟。在这个项目中,我们使用:
-
HttpSecurity 的自定义配置
受保护的无效配置(HttpSecurity http){
http.successHandler((httpServletRequest, httpServletResponse, authentication) -> {
httpServletResponse.setHeader(AUTHENTICATED_HEADER_NAME, AUTHENTICATED_TRUE);
HttpSession 会话 = httpServletRequest.getSession(); session.setMaxInactiveInterval(3600); }) }
和 Hazelcast,带有注释
@EnableHazelcastHttpSession(hazelcastFlushMode = HazelcastFlushMode.IMMEDIATE, maxInactiveIntervalInSeconds = 3600)
关于配置类。
到目前为止,上面的方法都不起作用,但我发现我可以在 application.properties 文件中使用server.session.timeout=timeInSeconds,但它没有效果。在调试模式下,我可以看到session.maxInactiveInterval 设置为 3600 秒,但是当我在我的机器上运行前端并且后端具有上述更改时,我得到了一个 30 分钟的会话。
更奇怪的是,如果我从 HttpSecurity setMaxInactiveInterval() 配置任何小于 30 分钟的值,它就会起作用,我得到了一个所需时间值的会话,但如果我尝试使用更大的值超过 30 分钟,不知何故会话将在 30 分钟后到期。
【问题讨论】:
标签: java spring session timeout hazelcast