禁止用户在注销后返回安全页面,jsp with firefox 5.0

Posted

技术标签:

【中文标题】禁止用户在注销后返回安全页面,jsp with firefox 5.0【英文标题】:prohibit the user from going back to a secure page after logout,jsp with firefox 5.0 【发布时间】:2011-10-03 01:52:14 【问题描述】:

我想禁止用户在注销后单击浏览器上的返回按钮(在我的例子中是 Mozilla Firefox 5.0)时返回到安全页面。 找到了两种方法, 设置正确的标题:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);

或使用 javascript 禁用后退按钮:

<script type="text/javascript">
window.history.forward(1);
</script>

实际上javascript并没有禁用后退按钮,只是在历史记录中向前用户转发一页,应该可以达到目的。

但两者都不起作用。我的注销页面包含以下代码:

<script type="text/javascript">
window.history.forward(1);
</script>

<% HttpSession ses=request.getSession(false);
ses.invalidate();
String referer = request.getHeader("Referer");
response.sendRedirect(referer);
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
%>

不符合我的目的。请帮忙。

【问题讨论】:

【参考方案1】:

需要在所有受保护的页面本身上设置这些标头,而不是在您放置实际属于 servlet 的注销逻辑的 JSP 上。更重要的是,由于您在此处发送重定向,因此这些标头完全没有效果。

正确的方法是将Filter 映射到所需的 URL 模式上,从而完成这项工作。我敢肯定,您最初在这里找到的大多数答案也表明:)

另见:

Prevent user from seeing previously visited secured page after logout

【讨论】:

以上是关于禁止用户在注销后返回安全页面,jsp with firefox 5.0的主要内容,如果未能解决你的问题,请参考以下文章

防止用户在jsp中注销后返回[重复]

如何使用servlet和jsp在注销后防止查看页面[重复]

jsp提交后,短时间内没切换页面,则样才能禁止用户连续点击提交按钮。。。

注销后如何保护我的帐户?

在注销期间破坏用户会话是不是足够?

jsp页面中用户注销的写法