防止用户在jsp中注销后返回[重复]
Posted
技术标签:
【中文标题】防止用户在jsp中注销后返回[重复]【英文标题】:Preventing User to go back after logout in jsp [duplicate] 【发布时间】:2012-12-18 14:59:35 【问题描述】:可能重复:Prevent user from going back to the previous secured page after logout
我需要通过防止用户在注销后访问 Java 应用程序 (mvc) 来保护它。
目标:
1.最终用户在退出后应该无法使用浏览器后退按钮访问受限页面。 2.最终用户在退出后应该无法访问浏览器历史记录中的任何受限URL
谷歌搜索后,我了解到禁用浏览器后退按钮不是一个好习惯。那么我怎样才能在 JSP 中最好地实现这一点?
谢谢&问候 阿什什
【问题讨论】:
使用java脚本清除缓存! 【参考方案1】:在每个页面中你大概可以清除cached page
。
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
if(session.getAttribute("some_token")==null)
response.sendRedirect("login/login.html");
%>
在logout
中,您必须使会话无效,因此当您单击返回时,它会检查session
中的some_token
属性值,如果不存在,它会将您重定向到login
页面。但请记住,登录后您在会话中设置some_token
属性。
【讨论】:
不好的做法。这还不够干。【参考方案2】:保护资源的一般方法 -
-
将会话属性检查(例如用户对象)放入受限页面
控制器。
注销后会话无效。
【讨论】:
【参考方案3】:对于每个受限 JSP/Servlet,您应该检查用户是否已登录。如果用户未登录,则将其重定向到非受限页面。 (你不需要任何 javascript)
<%
int userId = session.getAttribute("userId");
if(userId == null)
response.sendRedirect(redirectURL);
%>
当用户注销时,你的会话无效,所以当用户试图访问受限的 JSP/Servlet 页面时,你的身份验证逻辑将重定向他。
<% session.setAttribute("userId", null); // in your logout.jsp page %>
【讨论】:
这不考虑浏览器缓存。以上是关于防止用户在jsp中注销后返回[重复]的主要内容,如果未能解决你的问题,请参考以下文章