2015-03-25 2 views
1

Я работал с приложением J2EE, которое использует проверку подлинности на основе форм. Я понимаю объекты HttpSession и различные варианты использования, которые они имеют для хранения пользовательских данных (например, в тележках), поскольку http является протоколом без учета состояния.Понимание HttpSessions и аутентификации

Когда клиент делает запрос (например, добавляет что-то в свою корзину), создается сеанс, если он отсутствует, и корзина создается или обновляется в сеансе. Когда ответ отправляется обратно клиенту, HTTP-файл cookie с именем JSessionID является частью ответа, и этот файл cookie хранится в браузере. Поэтому, когда последующие запросы поступают на сервер (при условии, что файлы cookie не были очищены в браузере или сервер не был перезапущен или сеанс не был завершен), сеанс может быть расположен, и это то, что дает атрибут «statefulness» для протокола HTTP без ответа без ответа.

Мои вопросы:

1) Когда пользователь входит в приложение, которое использует проверку подлинности на основе форм, является сеанс автоматически создается?

2) Если нет, что должно произойти для того, чтобы пользователь фактически вышел из системы, поскольку сеанс недействителен?

В целом, я действительно пытаюсь понять, существует ли связь между пользователями HttpSession и пользователем, «входящим в систему» ​​в отношении проверки подлинности на основе форм. Может ли пользователь войти в систему и не иметь сеанса.

ответ

0

Ответ на этот вопрос исторически был зависимым от платформы. Например, WebSphere не требовал сеанса для аутентификации пользователя, но требовал использования специального вызова сервлета WAS для «выхода из системы» пользователя.

Это было окончательно установлено в спецификации Servlet 3.1 (Java EE 7), когда было добавлено HttpServletRequest.logout().

Смежные вопросы