Springboot app会话超时

时间:2015-03-18 17:03:07

标签: java spring-boot session-timeout

我创建了一个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

documentation

server.session-timeout= # session timeout in seconds

ServerProperties.java使用sessionTimeout;

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

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

5 个答案:

答案 0 :(得分:10)

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

server.session.timeout=120 
然而,当我设置会话超时和cookie最大年龄时,

对我没有用,如下所示:

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

它完美无缺

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

请注意,如果您正在使用 Redis会话@EnableRedisHttpSession (例如在其他评论@Phoebe Li's case中),那么应用程序属性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
}

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

在我的Spring Boot 2应用程序的application.yml中

# A negative value means that the cookie is not stored persistently and will be deleted when the Web browser exits
server:
  servlet:
    session:
      cookie:
        max-age: -1
      timeout: -1

通过这些设置,JSESSIONID Cookie的过期时间设置为“浏览会话结束时”。