пользовательское управление состоянием для Java EE

Я работал с Java EE (теперь Jakarta EE), так как раньше он назывался "EE" (например, сервлеты и т. д.), но в последний раз я серьезно занимался управлением сессиями более 15 лет назад. Теперь у нас есть новые технологии и тенденции, такие как HTML5 Web Storage API и Веб-токен JSON (JWT). Хотя можно спорить о преимуществах JWT для отслеживания сеансов, есть некоторые интересные преимущества отслеживания сеанса на одной вкладке с помощью sessionStorage.

Итак, просто чтобы ввести меня в курс дела:

  • Новейшие технологии Java EE (Java EE 8) по-прежнему ограничены файлами cookie и перезапись URL для отслеживания сеансов и
  • Позволяют ли самые последние API-интерфейсы Java EE обеспечивать настраиваемое управление состоянием, например. переопределить, как контейнер находит состояние (например, если бы я хотел сохранить идентификатор состояния в sessionStorage вместо файла cookie)?

Все обсуждения, которые я видел, похоже, танцуют вокруг этого вопроса. Если бы кто-нибудь мог направить меня к существующей документации, если таковая имеется, это тоже помогло бы. Спасибо.


person Garret Wilson    schedule 17.10.2018    source источник


Ответы (1)


localStorage предназначен для хранения данных для использования в браузере между сеансами. Для данных сеанса можно использовать sessionStorage. Никакие данные, хранящиеся там, никогда не попадают на сервер без явной публикации.

Данные сеанса также могут храниться в контейнере на стороне сервера. Состояние может быть определено любым из стандартных способов HTTP-заголовка или файла cookie. Разработчик может использовать собственную реализацию для хранения идентификатора сеанса. Если для управления сеансом используется Spring Session, то энергичному разработчику потребуется реализовать пользовательский преобразователь идентификатора сеанса .

person Amnon    schedule 25.10.2018
comment
У меня было два конкретных вопроса, и я боюсь, что не вижу, как вы ответили на любой из них, хотя я вижу, что вы нашли пример в скобках и ответили на него. Похоже, это один из тех ответов, которые, кажется, танцуют вокруг этого вопроса, как я уже упоминал в описании. :( - person Garret Wilson; 26.10.2018
comment
Пожалуйста, уточните более подробно Ваши вопросы. Что касается 1-го, я не вижу ограничения на другие виды отслеживания сеансов. Хотя я не видел, чтобы кто-то реализовывал это по-другому. Я искал на github реализации HttpSessionIdResolver и не смог их найти. Я предполагаю, что это хороший тест, так как Spring вездесущ. Что касается второго, похоже, вы смешиваете термины. На стороне сервера sessionStorage — это логический термин для данных, хранящихся в течение сеанса, которые могут сохраняться в различных бэкендах: jdbc, файлах, памяти, nosql. Я правильно понял ваши вопросы? - person Amnon; 28.10.2018
comment
Новейшие технологии Java EE (Java EE 8) по-прежнему ограничены файлами cookie и перезаписью URL-адресов для отслеживания сеансов? Да или нет? Я погуглил и ничего не нашел, это не ответ - я сам погуглил и ничего не нашел, поэтому и задаю вопрос. Позволяют ли самые последние API-интерфейсы Java EE обеспечивать настраиваемое управление состоянием, например. переопределить, как контейнер находит состояние? Да или нет? Если да, то как мне это сделать? Не отвлекайтесь на часть sessionStorage. Возможно, я отправляю его как HTTP-заголовок из JavaScript. Это был пример и дополнение к вопросу. - person Garret Wilson; 29.10.2018
comment
Вы также можете использовать скрытые поля формы. Кроме того, вы могли бы использовать более спокойный тон в своих ответах. - person Amnon; 01.11.2018