Session注销后,浏览器后退仍显示Session信息

初学JavaWeb,在一次测试登录功能的时候,发现了登进去后,点击退出按钮注销session,浏览器按后退能够显示session信息,并且点击登录还能够不输入密码登录(前端页面没写JS限制输入后登录)。

1、限制页面访问条件,先判空,当session为空或者session内属性为空的时候,跳转页面

// 获取Session中的对象
HttpSession session = request.getSession();
User user = (User) session.getAttribute("session_user");
// 判断用户是否登陆
// 代码中userName的属性存储着表的主键,故对存储主键的属性进行判空
if (user==null || user.getUserName()==null || user.getUserName()=="" || user.getName().length()==0) {
	// 用户未登录,重定向到登录页面
	response.sendRedirect("./login.jsp");
} else {
	// 写具体业务逻辑
}

2、禁用浏览器缓存

将这些代码放入有session信息的Servlet

// 禁用浏览器缓存
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

或者放在jsp页面的顶部

<%response.setDateHeader("Expires", 0);%>
<%response.setHeader("Cache-Control", "no-cache");%>
<%response.setHeader("Pragma", "no-cache");%>

这样点击后退后,会根据重定向进行跳转到登录页面

原文地址:https://www.cnblogs.com/windowsxpxp/p/12190343.html