会话在jsp中无法正常工作

问题描述:

会话代码无法正常工作。我试图访问该链接时,我复制了一个链接,然后在注销后,不用询问登录名就可以访问该链接。会话在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 2014-11-23 15:30:45

+0

'String user_name =(String)session.getAttribute(“user_name”); ' 'user_name'在注销后重定向回登录页面时将为空。你可以通过sysout检查它 – Pravin 2014-11-23 15:32:24

+0

会话不检查你是否登录。它只存储给定用户的属性(已验证或未验证)。在访问受限资源之前,检查用户是否已通过身份验证是您的工作。 – 2014-11-23 15:33:25

有一件事很重要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()作为最后一个响应命令。 – 2014-11-23 17:47:16