#spring #spring-boot #redis #spring-session
#весна #весенняя загрузка #redis #весенняя сессия
Вопрос:
Я пытаюсь переключить свой http-сеанс на redis в своем приложении spring boot. Когда первый запрос поступает на серверную часть, он фильтруется фильтром аутентификации. Одной из обязанностей этого фильтра является заполнение пользовательского компонента сеанса данными. На этом шаге сеанс успешно сохраняется в экземпляре redis, но дельта изменений (которая должна включать компонент сеанса) не вызывается. Я хочу отметить, что при сохранении сеанса на tomcat сеансовые компоненты работают правильно.
Итак, почему сеансовый компонент, заполненный фильтром OnePerRequest, не обновляется как дельта сеанса?
Ответ №1:
Вы пробовали следующую конфигурацию?
@Configuration
@EnableRedisHttpSession(saveMode = SaveMode.ALWAYS)
public class RedisSessionConfig {
}
Ответ №2:
Попробуйте изменить режим сброса на IMMEDIATE
, по умолчанию это ON_SAVE
означает, что вам явно нужно сохранить сеанс или в управляемой среде, это происходит до того, как ответ будет сериализован (я думаю).
В src/main/resources/application.properties
вы могли бы сделать:
spring.session.redis.flush-mode=immediate
Или с помощью @EnableRedisHttpSession сделать:
@EnableRedisHttpSession(redisFlushMode = RedisFlushMode.IMMEDIATE)