DefaultCookieSerializer.setJvmRoute не работает

Я пытаюсь включить SpringSession в свое приложение, но я также хочу сохранить привязку к серверу, поскольку у меня есть задания Talend, для которых требуются липкие сеансы.

Я могу заставить SpringSession с Redis работать по своему усмотрению, и для того, чтобы сродство к серверу работало, я хочу добавить jvmRoute к сеансу в новом Cookie.

В моем файле конфигурации я создаю следующий bean в соответствии с документами https://docs.spring.io/spring-session/docs/current/reference/html5/guides/java-custom-cookie.html

@Bean
public CookieSerializer cookieSerializer() {
    DefaultCookieSerializer serializer = new DefaultCookieSerializer();
    serializer.setCookieName("JSESSIONID");
    serializer.setJvmRoute("my-app1");
    return serializer;
}

Это переименовывает SESSION в JSESSIONID, поэтому я знаю, что он работает, но он не добавляет jvmRoute к sessionId.

Я что-то упустил? Любая помощь будет оценена по достоинству.

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
553
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы смотрите на фактическое значение файла cookie сеанса и надеетесь увидеть добавленный к нему настроенный jvmRoute, имейте в виду, что начиная с Spring Session 2.0 DefaultCookieSerializer по умолчанию использует файлы cookie в кодировке Base64.

Таким образом, jvmRoute фактически добавляется к идентификатору сеанса, но вся конкатенация получает кодировку Base64 перед записью в cookie.

Чтобы проверить jvmRoute, вы можете попробовать протестировать с помощью DefaultCookieSerializer, сконфигурированного с serializer.setUseBase64Encoding(false).

Это была моя проблема. поэтому я сделал именно то, что вы сказали, и это сработало. Однако сейчас я столкнулся с другой проблемой, о которой я спросил здесь stackoverflow.com/questions/51868693/…

DaithiG 16.08.2018 04:11

Я отправил ответ на ваш другой вопрос. Поскольку вы не приняли этот ответ, осталось ли что-нибудь, что требует дальнейшего объяснения?

Vedran Pavic 16.08.2018 06:21

Извините, забыл принять ответ. Спасибо большое

DaithiG 16.08.2018 21:32

Другие вопросы по теме