Создание нежелательной сессии - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть две страницы JSP: Login.jsp и Main.jsp.

Для шаблона URL / У меня есть сервлет, который делает это:

HttpSession session = request.getSession(false);
if (session == null) {
    response.sendRedirect("Login.jsp");
} else {
    response.sendRedirect("Home.jsp");
}

Два JSPстраницы пусты на данный момент.

Когда я просматриваю localhost:8080/appname/ в моем браузере, он перенаправляется на Login.jsp, как и ожидалось.Но когда я пытаюсь просмотреть его во второй раз, он перенаправляется на Home.jsp.

Когда я пытаюсь отладить, session не равен нулю, и я могу найти cookie с JSESSIONID в моем chromeбраузер.

Я не делаю getSession() где-либо еще.

Может кто-нибудь объяснить мне, что здесь происходит?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

JSP создает сеанс по умолчанию. Если вы не хотите сеанс, то добавьте

<%@ page session="false" %>
0 голосов
/ 07 февраля 2012

Не только JSP, любой запрос на сервере будет запускать сеанс. Поэтому в первый раз вы не получаете ни одного сеанса, а в следующий раз, когда получаете сеанс, созданный в предыдущем запросе.

Что вы можете сделать, это: a) Установите некоторый атрибут сеанса и вместо проверки сеанса проверьте атрибут, который будет установлен только после входа пользователя в систему. б) вы можете попробовать аннулировать сеанс каждый раз. Также убедитесь, что даже когда вы аутентифицируете пользователя, сделайте недействительным сеанс, затем сгенерируйте сеанс и затем установите атрибут сеанса.

...