我创建了一个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。
有没有人遇到过这个问题?我错过了什么或做错了什么?
答案 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的过期时间设置为“浏览会话结束时”。