我有30个jsp页面,可以登录和注销。我已将所有页面放在Session中,以便只有有效的用户才能访问。现在的问题是,每当用户点击注销时,会话就会失效,但如果用户按下浏览器的后退按钮,它仍会显示安全页面(不应显示)。
我知道问题出在持有缓存和历史记录的浏览器上。所以我在安全页面上应用response.setheader("cache-control",.....)
等,在安全页面中也应用window.history.go(+1)
。
它在某种程度上工作正常,但偶尔会显示受保护的页面。而且,一旦用户登录会话开始并且他将进入网站,后退按钮应该没有任何麻烦(没有提示用户重新发送表单数据)。一旦他退出会话应该结束,他不应该通过按回按钮来访问页面。有没有办法实现这个目标?
答案 0 :(得分:5)
1 为了检查用户是否经过身份验证,请不要在jsp上使用代码,我们只有Filter
才能使用它。
2 让您的Filter
执行以下操作以解决缓存问题
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
3 删除javascript