【问题标题】:After logout when I click back button in browser still the page accessible while refreshing it works fine注销后,当我在浏览器中单击后退按钮时,页面仍然可以在刷新时访问,它工作正常
【发布时间】:2016-01-20 07:12:25
【问题描述】:

我在jspservlet 有一个网页

我正在登录页面,它被重定向到homepage.jsp

在登录时,我在我的 servlet login.java 中设置会话变量如下:

HttpSession ss = rq.getSession(true);
ss.setAttribute("uid", rstusrdetail.getInt(1));
ss.setAttribute("username", rstusrdetail.getString(2));

我也有一个注销按钮,我的 logout.java 如下:

try {
            HttpSession ss = rq.getSession(false);
            if (ss.getAttribute("uid") == null || ss.getAttribute("username") == null ) {
                rs.sendRedirect("/");
            }

            rs.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
            rs.addHeader("Cache-Control", "post-check=0, pre-check=0");
            rs.setHeader("Pragma", "no-cache");
            rs.setDateHeader("Expires", 0);
            HttpSession session = rq.getSession(false);
            session.setAttribute("uid", null);
            session.setAttribute("username", null);            
            session.invalidate();
            rs.sendRedirect("/");
        } catch (Exception exp) {
            RequestDispatcher dd = rq.getRequestDispatcher("/");
            dd.forward(rq, rs);
        }

注销后,当我单击返回按钮时,它会重定向到 homepage.jsp

如果我刷新,那么我会收到会话过期消息。如果我直接访问该页面,我也会收到会话过期消息。

如何在不刷新的情况下单击返回按钮以使会话过期,或者有什么方法可以禁用浏览器中的返回按钮?

【问题讨论】:

  • 检查this article。很好解释。
  • @UUIIUI 我也在用同样的方法。你可以检查我上面的代码。我的问题是为什么我在返回按钮上获得页面?
  • @Santhucool 上面的代码并未表明您也遵循了该文章关于禁用所有敏感页面缓存的建议(不仅在注销时)。
  • 好吧,让我试试吧!
  • 谢谢哥们,我已经添加了一些行,它解决了我的问题!

标签: java jsp session servlets


【解决方案1】:

在每个需要登录的页面顶部添加以下代码:

HttpServletResponse httpResponse = (HttpServletResponse)response;

httpResponse.setHeader("Cache-Control","no-cache, no-store, must-revalidate"); 
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpResponse.setHeader("Pragma","no-cache"); 
httpResponse.setDateHeader ("Expires", 0); 
if (session.getAttribute("uid") == null || session.getAttribute("username") == null ) {                               
                 response.sendRedirect("/invalidSession.jsp");
                 return;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2014-05-13
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多