我试图在会话结束后阻止用户回来。但它不起作用。任何人都建议我怎么做。
在注销操作类中,我编写了此代码
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
mySession.removeAttribute("user_id");
mySession.invalidate();
return mapping.findForward(SUCCESS);
因此它将用户重定向到索引页面。当我按下后退按钮时,用户可以看到已经访问过的所有页面。
如何防止这种情况。
在每个jsp页面中,我都是这样尝试的
if (session.getAttribute("user_id") == null || session.getAttribute("user_id").equals(""))
{
response.sendRedirect("index.do");
}
else
{
.........
}
即使我无法阻止用户回来。当用户执行任何操作时,只有用户重定向到索引。帮助我。
答案 0 :(得分:0)
更好的解决方案是使用Filter,它处理您的应用程序的每个请求。
http://www.coderanch.com/t/547172/Struts/filters-struts
使用过滤器验证用户会话的示例。
public void doFilter(final ServletRequest request, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
if (req.getSession().getAttribute("user_id") == null || req.getSession().getAttribute("user_id").equals("")) {
HttpServletResponse response = (HttpServletResponse) res;
response.addHeader("Location", "/SessionTimeoutAction.do");
response.sendError(HttpServletResponse.SC_TEMPORARY_REDIRECT);
}
chain.doFilter(request, res);
}