问题 Springboot app会话超时


我创建了一个SpringBoot MVC / Security应用程序1.2.2.RELEASE,我的application.properties包含服务器设置,如

#Tomcat port and contextPath details
server.port=8080
server.contextPath=/test
#server.session-timeout=120
server.sessionTimeout=120

文件 状态

server.session-timeout= # session timeout in seconds

但是 ServerProperties.java 使用sessionTimeout;

如果你查看我提出的application.properties代码,我已经独立尝试了两个,但是我没有在2分钟后超时,我没有明确编写任何其他代码来执行任何会话handeling。

有人遇到过这个问题吗?我错过了什么或做错了什么?


4446
2018-03-18 17:03


起源

靴子 轻松绑定 意味着两者 server.sessionTimeout 和 server.session-timeout 将配置 ServerProperies“ sessionTimeout 属性。请注意,单位是秒,而不是分钟。 - Andy Wilkinson
@Andy,感谢您提供的信息,但这仍然无法解释为什么我没有时间,即使我将值设置为120秒(2分钟) - victor
这就是为什么它是评论而不是答案 - Andy Wilkinson
据此,超时不以分钟数表示: stackoverflow.com/questions/24561915/... - pastafarian
为什么你会超时?会话将被清理,如果您将其与Spring Security混合(从您的问题中不明显)可能是错误配置的。此时超时约为2分钟,具体取决于收割者线程的运行时间,而不是2分钟,实际上可能是3分钟,具体取决于清理会话的线程。 - M. Deinum


答案:


我不知道由于某种原因只设置

server.session.timeout=120 

然而,当我设置会话超时和cookie最大年龄时,对我来说不起作用如下:

server.session.cookie.max-age=120
server.session.timeout=120 

它完美地运作


9
2018-06-22 07:42



它的工作原理是浏览器使cookie无效并且不会将其发送到服务器,因此服务器无法找到会话 - JohnnyAW
这样,无论活动如何,cookie都会失效,因此,当您填写表单时,您可能会被注销,并且在您提交时,您将被重定向。 - Wilhelm Sorban
对我不起作用。 - sinoTrinity


我不确定这个server.session.timeout是什么,因为当我将它设置为特定的数字并监视会话创建时,会话到期不会改变。

我正在使用spring会话和redis集成,在我的情况下,我需要将maxInactiveIntervalInSeconds设置为120(秒),这可以通过redisHttpSessionConfiguration来完成。

然后,如果我去redis寻找会话,我可以看到它的到期时间改为120秒,会话超时工作。

我的一个建议是尝试找出是否可以通过编程方式或在属性文件中配置会话的maxInactiveIntervalInSeconds(或类似)并监视会话更改。


2
2018-06-09 15:49





(这适用于撰写本文时的Spring 1.5.x)

请注意,如果您正在使用 Redis会话@EnableRedisHttpSession (例如在其他评论中 @Phoebe Li的案子),然后将不应用应用程序属性server.session。您必须通过以下代码手动设置它:

@EnableRedisHttpSession
public class HttpSessionConfig {
    @Bean
    public RedisOperationsSessionRepository sessionRepository(RedisConnectionFactory factory) {
        RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(factory);

        //Set the TTL of redis' key, which in turn will expire session when TTL is reached
        sessionRepository.setDefaultMaxInactiveInterval(15); //e.g. 15 seconds

        return sessionRepository;
    }I
}

1
2018-04-17 08:18





您可以尝试添加这两个语句。

server.session.cookie.max-age=120
server.session.timeout=120

你可以在我的博客上找到完整的例子: http://www.onlinetutorialspoint.com/spring-boot/how-to-set-spring-boot-tomcat-session-timeout.html


0
2018-03-14 05:39