#java #spring #session #spring-session
#java #spring #сеанс #весенняя сессия
Вопрос:
Я изучаю весенние сессии, просматривая документы, я смог создать таблицу и сохранить там свой сеанс, и, как я вижу, spring добавляет SESSION
cookie, но его значение полностью отличается от значения идентификатора сеанса в БД.
На первом экране вы можете увидеть идентификатор сеанса в БД, а на втором — значение cookie из браузера. Во время отладки я вижу, что HttpSession.getId() возвращает значение, которое находится в БД. Интересно, почему эти значения разные и как spring знает, какой сеанс возвращать? Спасибо.
Ответ №1:
Начиная с версии 2.0, Spring Session по умолчанию использует сеансовые файлы cookie в кодировке Base64. Вы можете изменить это значение по умолчанию, настроив DefaultCookieSerializer и установив значение useBase64Encoding равным false.
@Bean
fun cookieSerializer() : CookieSerializer {
val serializer = DefaultCookieSerializer()
serializer.setCookieName("JSESSIONID")
serializer.setCookiePath("/")
serializer.setDomainNamePattern("^. ?\.(\w \.[a-z] )$")
serializer.setUseBase64Encoding(false)
return serializer
}