2014-11-23 2 views
0

Код сеанса работает неправильно. Я скопировал ссылку и после выхода из системы, когда попытался получить доступ к этой ссылке, чем она работала, не спрашивая логин.Сессия не работает должным образом в jsp

Вот код моей страницы входа в систему, на которой я создал сессия:

String user_name=request.getParameter("user_name");   
String pass=request.getParameter("pass"); 
session.setAttribute("user_name", user_name); 
session.setAttribute("pass",pass); 

Вот код этой страницы, на которой я передал мою сессию:

String user_name = (String)session.getAttribute("user_name"); 

Вот код выхода из системы страницы:

session.setAttribute("user_name", null); 
session.invalidate(); 
response.sendRedirect("index.jsp"); 
response.addHeader("cache-control","no-cache"); 
+0

Как проверить, вошел ли кто-нибудь в систему? (не храните пароли в сеансах .. :-)) – DarkBee

+0

'String user_name = (String) session.getAttribute (" user_name "); ' ' user_name' будет пустым, а при переходе на страницу входа в систему будет перенаправлено. вы можете проверить его на 'sysout' – Pravin

+0

В сеансе не проверяется, вошли ли вы в систему или нет. Он просто хранит атрибуты для данного пользователя (аутентифицированные или нет). Ваша задача проверить, прошел ли аутентификация пользователя перед доступом к ограниченному ресурсу. –

ответ

0

Одно важен sendRedirect() должна быть последней командой ответ.

response.addHeader("cache-control","no-cache"); 
response.sendRedirect("index.jsp"); 

В index.jsp, если это защищаемый ресурс, вы должны перенаправить на страницу входа, если не действительный user_name в сессии.

String user_name = (String)session.getAttribute("user_name"); 
if (user_name == null) response.sendRedirect("login.jsp"); 
+0

hello Roman, Спасибо за эту информацию и да, я всегда пишу sendRedirect() как последнюю команду для ответа. –

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