Java Web, сеансы устанавливаются автоматически

Я пытаюсь создать фильтр входа в свой веб-проект Java. Проблема в том, что когда я вызываю request.getSession(false), возвращаемый объект сеанса не равен нулю, другими словами, сеанс активен. Но я уверен, что не вызывал getSession() ни в каком другом месте своего кода. Даже если я удалю этот фильтр, он не сработает. Если я открою инструменты разработчика браузера на вкладке сети, он покажет мне набор jsessionid. Сессия устанавливается автоматически?

Обычно сеанс создается автоматически. В частности, если клиент обращается к динамическому ресурсу, такому как сервлет или jsp.

ernest_k 31.05.2019 07:27

@ernest_k Итак, как я могу создать фильтр входа в систему, если сеанс всегда открыт?

Raphael Andrade 31.05.2019 15:13

Сессия не подразумевает вход в систему

ernest_k 31.05.2019 15:19

Но как я могу убедиться, что это сеанс входа в систему?

Raphael Andrade 31.05.2019 15:23

вы можете решить и реализовать это, возможно, сохраняя данные в сеансе...

ernest_k 31.05.2019 15:26

Вы используете JSP-страницы?

Heraldo 31.05.2019 17:08

Да, я использую JSP

Raphael Andrade 01.06.2019 02:13

Какой смысл иметь класс / API HttpSession, если мне нужно реализовать все самому?

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

Ответы 1

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

Если вы хотите отслеживать «вошедшего в систему пользователя», то я думаю, что вы ищете, чтобы отслеживать его с помощью HttpSession, например:

HttpSession session = request.getSession();
session.setAttribute("loggedInUser", userObject);

Ypu может получить его из сеанса, когда вам это нужно, с помощью:

Object loggedInUser = session.getAttribute("loggedInUser");

И позже, когда пользователю нужно «выйти», удалите сохраненного пользователя из сеанса:

session.removeAttribute("loggedInUser");

Чтобы ответить на ваш вопрос в комментариях What's the point to have a HttpSession class/api if i have to implement everything by myself?: HttpSession представляет собой разговор с конкретным клиентом, чтобы последующие запросы от того же клиента могли быть идентифицированы и обработаны должным образом. Он вовсе не представляет собой «вошедшего в систему пользователя», что является особым требованием домена — не все службы требуют аутентификации.

Наконец, если вам нужна дополнительная информация о том, когда создается файл cookie JSESSIONID, прочтите этот вопрос.

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