gpt4 book ai didi

spring-boot - @EnableRedisHttpSession + Spring Boot忽略了application.yml上的server.session.timeout

转载 作者:行者123 更新时间:2023-12-03 14:38:23 25 4
gpt4 key购买 nike

我有一个项目,使用 Spring Boot 1.3.3 [另一个内容]和 Redis 配置为管理 session ,即 @EnableRedisHttpSession 。该应用程序运行良好,并定期将信息存储在Redis上。
我面临的问题是,与文档中所说的不同,无论我是否定义server.session.timeout,Redis始终使用其注释属性的默认值( maxInactiveIntervalInSeconds ),即: 1800

在这里,我遵循的文档:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-session.html

我也尝试过@rwinch此处https://github.com/spring-projects/spring-session/issues/110定义的方法,但也没有成功。

正在更新......

我的配置文件按要求:

#First attempt (server.session.timeout) following the Spring documentation mentioned
server:
session:
timeout: 10
spring:
#session timeout under spring (as mentioned by M Deinum in comment - unfortunately doesnt work)
session:
timeout: 10
redis:
host: 192.168.99.101
port: 6379

除此之外,我还尝试实现一个负责设置超时的SessionListener(类似这样):
    public class SessionListener implements HttpSessionListener {
@Value(value = "${server.session.timeout}")
private int timeout;
@Override
public void sessionCreated(HttpSessionEvent event) {
if(event!=null && event.getSession()!=null){
event.getSession().setMaxInactiveInterval(timeout);
}
}
...

它仍然没有导致正确的情况。我真的在绞尽脑汁:|

拜托,我想念点吗?还有其他人面对过吗?

提前致谢。

最佳答案

另一个解决方案:

@EnableRedisHttpSession
public class HttpSessionConfig {

@Value("${server.session.timeout}")
private Integer maxInactiveIntervalInMinutes;

@Inject
private RedisOperationsSessionRepository sessionRepository;

@PostConstruct
private void afterPropertiesSet() {
sessionRepository.setDefaultMaxInactiveInterval(maxInactiveIntervalInMinutes * 60);
}

这样,您可以使用默认配置,只需添加超时即可。因此,您将维护默认的HttpSessionListener,并且无需使用ApplicationListener来设置应用程序生命周期中的超时时间(仅一次)。

关于spring-boot - @EnableRedisHttpSession + Spring Boot忽略了application.yml上的server.session.timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37303967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com