Файл cookie Весенней сессии показывает неправильное значение

#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
    }