Spring Boot Java Config 设置会话超时
Posted
技术标签:
【中文标题】Spring Boot Java Config 设置会话超时【英文标题】:Spring Boot Java Config Set Session Timeout 【发布时间】:2017-04-19 21:17:58 【问题描述】:如何在 Spring Boot 应用程序中配置(嵌入式)Tomcat 会话超时?
public class SessionListener implements HttpSessionListener
@Override
public void sessionCreated(HttpSessionEvent se)
se.getSession().setMaxInactiveInterval(5*60);
@Override
public void sessionDestroyed(HttpSessionEvent se)
我有一个 SessionListener,但我不知道我必须在哪个类中将此 Listener 添加到 Context。
【问题讨论】:
另外有用的是知道,根据这篇文章,设置不能在代码中更新,必须通过属性文件完成,因为答案表明:baeldung.com/servlet-session-timeout。从那篇文章:“没有办法以编程方式设置全局会话超时” 【参考方案1】:您应该可以在 application.properties 文件中设置server.session.timeout
。
参考:http://docs.spring.io/spring-boot/docs/1.4.x/reference/html/common-application-properties.html
编辑:
此属性在 Spring Boot 的后续版本中已更改为 server.servlet.session.timeout
。
参考:https://docs.spring.io/spring-boot/docs/2.4.x/reference/html/appendix-application-properties.html#server.servlet.session.timeout
【讨论】:
server.session.timeout= # 会话超时秒数。 在您的 application.properties#session timeout (in secs for spring, in minutes for tomcat server/container) server.session.timeout=1
我测试了它并且正在工作!原来tomcat分分钟拿走财产【参考方案2】:
application.properties
文件中的server.session.timeout
现在已弃用。正确的设置是:
server.servlet.session.timeout=60s
另请注意,Tomcat 不允许您将超时设置为小于 60 秒。有关该最小设置的详细信息,请参阅https://github.com/spring-projects/spring-boot/issues/7383。
【讨论】:
弹簧靴2.0移动 @user1553728 什么? 注意:在嵌入的 Tomcat 服务器中,它是以分钟为单位的,所以如果你设置一个小于 1 分钟的值,它必须等待 1 分钟才能使会话过期。 我在 Spring Boot 2.2.6 和嵌入式 tomcat 9 中成功使用了低于 60 秒的会话超时! @Daryl server.servlet.session.timeout=60s 在我将 spring boot(2.2.4) spring security(5.2.1) Web 应用程序部署到独立的 tomcat(9) 时不起作用。我也试过分钟【参考方案3】: Spring Boot 1.0 版:server.session.timeout=1200
Spring Boot 2.0 版:server.servlet.session.timeout=10m
注意:如果未指定 持续时间后缀,则将使用秒数。
【讨论】:
以上是关于Spring Boot Java Config 设置会话超时的主要内容,如果未能解决你的问题,请参考以下文章
spring.config.location 在 Spring Boot 2.0.0 M6 上不起作用
Spring Boot, Java Config - No mapping found for HTTP request with URI [/???] in DispatcherServlet wi