У меня есть index.jsp в качестве стартовой страницы для моего веб-сайта, после успешной попытки входа в систему он перемещает пользователя к main.jsp.
На этой второй странице есть кнопка выхода из системы, при нажатии на которую вызывается сервлет Logout.jsp, и внутри его метода doPost () будут выполняться следующие две строки:
request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + "/index.jsp");
На моей веб-странице пользователь имеет доступ к некоторым веб-службам, и я храню данные об использовании в базе данных с уникальным идентификатором sessionID.
Это прекрасно работает, пока пользователь не обнаружит в своем браузере кнопку «Возврат» или не вернется вручную к myWebpage / index.jsp. Таким образом, он может войти с другим пользователем, но sessionID не изменится. Это приводит к большому беспорядку в моей базе данных.
Я попытался добавить следующий код в начало моего index.jsp в качестве первой строки, чтобы сделать текущий идентификатор сессии недействительным:
<%
session.invalidate();
/* Stops the page from loading */
// session = request.getSession(true);
%>
Проблема с этим «решением» состоит в том, что процесс аутентификации будет иметь другой sessionID в качестве действий пользователя после того, как он вошел в систему, но меня больше всего беспокоит то, что он не мешает пользователю иметь уже используется sessionID.
SessionID перед входом в систему (index.jsp)
05A57EB92439AF875DA55714CBBA4152
SessionID после входа в систему (main.jsp)
48F16265C66B86AAD1C7AF0A5705CF5E
SessionID после выхода из системы (index.jsp)
55835EC4EAA7EC5F4FB8D4E352248A7D <- 1) </p>
После второго входа в систему (main.jsp)
F198DB58BAD0E7D819A0391042F94741 <- 2) </p>
- все как положено -
После возврата из браузера (index.jsp)
55835EC4EAA7EC5F4FB8D4E352248A7D <- 1) <br>Это идентификатор сеанса с момента последнего посещения index.jsp.
После третьего входа в систему (main.jsp)
F198DB58BAD0E7D819A0391042F94741 <- 2) <br>Это идентификатор сеанса с последнего посещения main.jsp.
Не должен ли идентификатор сессии каким-то образом быть уникальным? Я могу как-то понять, почему первый идентификатор такой же, но не почему, похоже, существует шаблон для назначения идентификаторов.