我正试图在春季启动应用程序中将http会话切换到redis。当第一个请求到达后端时,它将被身份验证过滤器过滤。这个过滤器的一个职责是用数据填充用户会话bean。在这一步中,会话成功地保存到了redis实例中,但没有调用更改的增量(应该包括会话bean(。我想指出的是,通过在tomcat上存储会话,会话bean可以正常工作。
那么,为什么OnePerRequest过滤器上填充的会话bean没有更新为会话的增量呢?
您尝试过以下配置吗?
@Configuration
@EnableRedisHttpSession(saveMode = SaveMode.ALWAYS)
public class RedisSessionConfig {
}
尝试将刷新模式更改为IMMEDIATE
,默认情况下为ON_SAVE
,这意味着您必须明确保存会话,或者在托管环境中,这发生在序列化响应之前(我认为(。
在src/main/resources/application.properties
中,您可以执行:
spring.session.redis.flush-mode=immediate
或者使用@EnableRedisHttpSession do:
@EnableRedisHttpSession(redisFlushMode = RedisFlushMode.IMMEDIATE)