2012-02-12 66 views
2

我做了一個帶登錄頁面的簡單網站,一切正常,除非用戶點擊瀏覽器中的返回按鈕,註銷後上一頁出現。使用servlet禁用瀏覽器返回功能

我試圖追蹤會議,但沒有成功,有什麼建議嗎? ps:我更喜歡在服務器端編程中實現這一點。

感謝

這裏是我的重定向URL過濾器,如果有的話,這可能是問題的所在

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
        throws IOException, ServletException 
{ 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 

    HttpSession session= request.getSession(false); 

    if(request.getRequestURI().compareToIgnoreCase("/login.jsp")!=0&& 
      request.getRequestURI().compareToIgnoreCase("/")!=0) 
    { 
      if (session!=null &&!session.isNew()) 
      { 
        chain.doFilter(req, res); 
      } 
      else 
      { 
       response.sendRedirect(request.getContextPath()+"/login.jsp"); 
       } 
    } 
    else 
    { 
     chain.doFilter(req, res); 

    } 
} 
+0

爲什麼不解決這個問題,而不是實現一個解決方法(即禁用後退按鈕)?我討厭不讓我使用Back而沒有正確處理它的網站。也許我們可以幫助您解決用戶退出後顯示頁面的問題? – Deco 2012-02-12 05:57:33

+0

「我試圖跟蹤會話,但不成功」 - 但這是首選方式。如果用戶未通過身份驗證,請將HTTP 302重定向發送到您的登錄頁面URL。來自需要任何驗證的任何URL。您甚至可以將之前請求的資源添加到重定向參數以允許跳回。 – 2012-02-12 06:06:52

+0

添加了我的重定向過濾器代碼 – ikel 2012-02-12 06:15:56

回答

1

2快速的方法我能想到的:

  1. 通話以下javascript代碼:

    window.history.back(0)= window.location

  2. 你的身體標記更改爲:

    <身體onunload的= 「JavaScript的:history.go(1)」>

+1

我真的更喜歡服務器端解決方案 – ikel 2012-02-12 18:40:51

+0

試試這個:http://tech-torch.blogspot.com/2007/02/disabling-browser-back-button.html – alfasin 2012-02-12 19:58:17

+1

謝謝,但這些是客戶端實現,我需要在服務器端的東西,和我實際上在頭部實現了這些無緩存設置,但沒有使用 – ikel 2012-02-13 03:59:34

-1

通過使用JavaScript,如果你有兩頁1和Page 2和( page1重定向到page2),並且您想限制用戶回到page1,只需將此代碼放在page1。

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
     $(document).ready(function() { 
      function disableBack() { 
       window.history.forward() 
      } 

      window.onload = disableBack(); 
      window.onpageshow = function (evt) { 
       if (evt.persisted) 
        disableBack() 
      } 
     }); 
    </script> 
相關問題