Как создать сессию для входа и выхода в Java
Это код, который я написал на странице входа
HttpSession session = request.getSession(true);
session.setAttribute("name", user1);
String nme=(String) session.getAttribute("name");
И это код для logout.jsp
<% request.getSession().invalidate();
ИЛИ ЖЕ
if(session!=null){
session=null;
}
ИЛИ ЖЕ
request.getSession().setAttribute("name", null); //it just assigns null to attribute
response.sendRedirect("login.jsp");
%>
сеанс создается, но после того, как кнопка выхода из системы работает.... Я хочу, чтобы кнопка возврата не работала.
3 ответа
Чтобы выйти или сделать недействительным текущий сеанс, у вас есть правильный код, как показано ниже.
request.getSession().invalidate();
Теперь, после того как вы нажали кнопку "Назад" браузера, он загружает страницу из кэша. Таким образом, чтобы позаботиться об этой ситуации, вы можете сделать ниже 2 вещи.
Управление историей браузера с использованием HTML 5
History
API, чтобы при нажатии кнопки "Назад" он перемещался в нужное место при манипулировании им.Предложите пользователю закрыть страницу, как это делают обычные защищенные сайты после успешного выхода из сеанса, такие как банковские сайты и финансовые сайты.
В качестве альтернативы вы можете написать и настроить класс перехватчика на стороне контейнера / сервера сервлета, чтобы управлять кешем, добавляя в ответ следующие параметры.
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
Надеюсь, что это помогает вам.
Просто удалите атрибут из сеанса и проверьте, существует ли он.....
request.getSession.removeAttribute("name")
и проверить как:
if(request.getSession.getAttribute("name")==null){
}
Ваша проблема не в сеансе, так как он не будет использоваться на странице, которая уже была загружена и просто загружена из кэша (функциональность кнопки назад)
Рассмотрите возможность использования localtion.href.replace
в вашем коде клиента.
localtion.href.replace (url): заменить текущий документ документом по указанному URL. Отличие от метода assign() состоит в том, что после использования replace() текущая страница не будет сохранена в истории сеансов, то есть пользователь не сможет использовать кнопку "Назад" для перехода к ней.