【问题标题】:prevent user from back after session is closed会话关闭后阻止用户返回
【发布时间】:2014-11-18 05:33:26
【问题描述】:

我试图阻止用户在会话关闭后返回。但它不工作。任何人都建议我如何做到这一点。

在注销操作类中我写了这段代码

            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
        {
             .........
        }

即使我无法阻止用户返回。当用户执行任何操作时,只有用户重定向到索引。帮帮我。

【问题讨论】:

    标签: java jsp struts


    【解决方案1】:

    更好的解决方案是使用过滤器,它处理对您的应用程序的每个请求。

    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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2016-12-06
      • 2016-11-30
      • 2018-07-08
      相关资源
      最近更新 更多