2012-02-17 34 views
1

我在struts2中執行我的項目,並且在我的項目中成功創建了登錄頁面和註銷頁面。但是,當用戶註銷並且他點擊瀏覽器用戶的後退按鈕時,可以查看登錄頁面。我該如何避免這種情況?當用戶在struts註銷後點擊返回按鈕時查看登錄頁面

這裏是我的登錄頁面的HTML

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<% /* 
    <s:if test="#session.Salesman.username != ''" > 
    <script type="text/javascript" > 
    top.location.href = "salesmanHome" ; 
    </script> 
    </s:if> 
    <s:else> 
    */%> 

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Cache-control" content="no-cache"> 

     <!--++++++DEVELOPED BY WWW.ZOONDIA.IN AND WWW.ZOOCRE8IVE.COM+++++--> 
     <title>DrDirect</title> 
     <script src="js/scripts.js" type="text/javascript"></script> 
     <style type="text/css">@import url("css/styles.css");</style> 
       <meta http-equiv="Pragma" content="no-cache"/> 
     <meta http-equiv="Cache-Control" content="no-cache"/> 
      <meta http-equiv="Expires" content="-1"/> 

    </head> 

    <body> 

     <div class="drDirectHomeWrapper"> 


      <div id="wrapper" class="drSalesBottomSection innerBotSec"> 
       <div class="drLoginWrapper overview"> 
        <div class="drLoginCont"> 
         <div class="drLoginHolder"> 
          <img src="images/drHomeLogo.png" width="203" height="41" alt="" /> 

          <form action="salesManLogin" method="post"> 
           <div class="drLoginField"> 
            <s:if test="hasActionErrors()"> 
             <div class="loginErrorHolder"> 
             <s:actionerror /> 
             </div> 
            </s:if> 
            <input type="hidden" name="urlPath" value="<%=request.getServletPath()%>" /> 


            <div class="drLoginNameHolder queryInput"> 
             <label for="userName">User Name</label> 

             <%--<s:textfield id="userName" theme="simple" name="userName"/>--%> 
             <input type="text" id="userName" name="userName" autocomplete="off"/> 
            </div> 

            <div class="drLoginNameHolder queryInput"> 
             <label for="password">Password</label> 
             <%-- <s:password theme="simple" name="password" id="password"/> --%> 
             <input type="password" name="password" id="password" autocomplete="off"/> 
            </div> 



            <!-- <input type="submit" class="btnHomeLogIn" value="Login" /> --> 
            <button type="submit" class="btnHomeLogIn" >Login</button> 

            <div class="clear"></div> 
            <p class="homeLoginPassword"> 
             <a href="gotoForgotPassword.action">Lost Your Password?</a> 
            </p> 
           </div> 
          </form> 

         </div> 
        </div>   
       </div> 
      </div> 
     </div> 

    </body> 

</html> 

,這裏是我的登錄成功頁面

<%@taglib prefix="s" uri="/struts-tags" %> 
<s:include value="/WEB-INF/salesMan/salesManheader.jsp"/> 
<%@page import= "com.myDrDirect.common.MyBase64"%> 
    <div id="container"> 
     <!--Header--> 
     <div id="pageHeader"> 
      <s:a action="gotosalesManLogout" >Logout</s:a> 
      <a href="/" title="DrDirect"><img src="images/pageLogo.png" width="166" height="36" alt="DrDirect" /></a> 
     </div> 
<s:include value="/WEB-INF/salesMan/salesManLeftMenu.jsp" /> 
       <!--Right Col--> 
       <% 
           Integer docid = null; 
           String did = null; 
           try { 

            //docid =0; 

            did = "0"; 

            MyBase64 Base64 = new MyBase64(); 
            byte[] bytedocid = did.getBytes(); 
            did = Base64.encode(bytedocid); 
           } catch (Exception e) { 
            e.printStackTrace(); 
           } 

          %> 
       <%-- <div id="rightCol" class="tablecell3"> 
        <!--<iframe src="text.html" height="100%" width="100%" frameborder="0" scrolling="no" allowtransparency="yes"></iframe>--> 
         <div class="drHomeSignUpWrapper"> 
          <div class="drHomeSignUpCont"> 
           <div class="drHomeSignUpHolder"> 
            <img src="images/drHomeLogo.png" width="203" height="41" alt="" /> 
            <a class="btnDrSignUp" title="Presentation">Presentation</a> 
            <a href="gotosalesManDoctorhome" id="template" class="btnDrSignUp" title="Templates">Templates</a> 
            <s:form action="" method="post" name="signUpformDoctor" > 
            <s:hidden name="ID" value="" id="doctorID"/> 
            <a href="javascript:void(0);" onclick="redirectpagesignUpformDoctor('<%=did%>');" class="btnDrSignUp" title="Sign Up Doctor">Sign Up Doctor</a> 
            </s:form> 
           </div> 
          </div>   
         </div> 
       </div>--%> 
       <!--End Right Col--> 
        <div id="rightCol" class="tablecell3"> 
        <!--<iframe src="text.html" height="100%" width="100%" frameborder="0" scrolling="no" allowtransparency="yes"></iframe>--> 
        <div class="rightWrapper removeClass"> 
         <iframe src="salesManhomePage" height="100%" width="100%" id="frameCont" frameborder="0" scrolling="no" name="iframeCenter" allowtransparency="yes"></iframe> 
         <!-- <div class="bgLeftShadow removeClass"></div>--> 
         <div class="bgRightShadow removeClass"></div> 
        </div> 
        <div class="bgRightWrapBot removeClass"><div class="bgBotRight"><div></div></div></div> 
       </div> 

     <%--<s:include value="/WEB-INF/salesMan/salesmanDoctorsList.jsp" /> 
     <s:include value="/WEB-INF/salesMan/salesmanIframe.jsp" />--%> 




      <s:include value="/WEB-INF/salesMan/salesManFooter.jsp" /> 

和我salesManHeader.jsp是

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"/> 
     <!--++++++DEVELOPED BY WWW.ZOONDIA.IN AND WWW.ZOOCRE8IVE.COM+++++--> 
     <title>DrDirect - Template</title> 
     <script src="js/scripts.js" type="text/javascript"></script> 
     <style type="text/css">@import url("css/styles.css");</style> 
     <script type="text/javascript">contactScroll="yes";</script> 
      <meta http-equiv="Pragma" content="no-cache"/> 
     <meta http-equiv="Cache-Control" content="no-cache"/> 
      <meta http-equiv="Expires" content="-1"/> 
     </head> 

    <body style="min-width: 1024px;"> 

請檢查。包括頁面會在這裏引起問題。

+1

內容沒有什麼可能只是緩存。當用戶點擊後退按鈕並返回到網站時,他們是否可以實際瀏覽已登錄的視圖?如果您已註銷註銷會話......他們可能無法*實際*查看任何新內容或實際瀏覽網站。點擊網站上的任何鏈接都應該註銷。 – 2012-02-17 06:11:08

+0

您可以在每個頁面上執行javascript檢查,檢查是否存在實際會話,如果不是,則重定向。 – 2012-02-17 06:14:54

回答

0

長的時間(更好的)解決方案: 您應該實現的東西就像在你application.Also你可以使用支柱攔截器以過濾掉去當用戶註銷時至server.So任何請求,會話將被銷燬session

短時間解決方案:

在您的登錄頁面,粘貼此代碼在onload事件:

window.history.forward(1); 

更新

在您的登錄頁面:

<body onload="window.history.forward(1);"> //// to disable back button 
+0

我有寫在我的所有網頁上。但它不起作用 – user359187 2012-02-17 09:00:44

+0

正如我所提到的,嘗試將它添加到頁面的onload事件中。使其成爲: 'history.forward(1);' – Ved 2012-02-17 09:11:29

+0

是的,我已經嘗試了相同的history.forward(1) js頁面。但這不是工作人員。 – user359187 2012-02-17 09:14:17

0

我假設你有授權續在您的密碼保護區域中使用會話。然後,您可以簡單地在您的頭標中添加meta標籤,以免無法使用。

<meta http-equiv="Cache-control" content="no-cache"> 

希望這個作品..

0

的內容可能只是緩存。

如果你的應用是不是超級數據重型只是任何HTML輸出之前添加非緩存頭

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. 
header('Pragma: no-cache'); // HTTP 1.0. 

這將是一個速戰速決。

1

那麼@Jordan Arsenault在評論中已經說過的話完全適用於您的問題。這是一個與瀏覽器緩存相關的問題,如果您已經使會話失效,那麼單擊該鏈接將不會讓用戶執行任何事情,直到他/她登錄到系統

一些你可以做其他的工作,設置HTTP標頭無論是在你的註銷Action類或者可以創建下面的代碼的東西自定義攔截器一樣

HttpServletResponse response=null; 
response=ServletActionContext.getResponse(); 
response.setHeader("Pragma", "no-cache"); 
response.setHeader("Cache-Control", "no-cache"); 
response.setHeader("Expires", "0"); 

另外,您還可以將這些標題添加到您的JSP頁面,但它不能100%確定服務器會尊重您的標題直到您以安全模式(https)瀏覽。

閱讀從郵件列表以下螺紋的類似問題

  1. Browser-Back-Forward-Button-in-Struts2
  2. Browser_Cache
0

我已經試過

<% 
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 
response.setHeader("Pragma","no-cache"); //HTTP 1.0 
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 
%> 
在我的jsp頁面

HttpServletResponse response=null; 
     response=ServletActionContext.getResponse(); 
     response.setHeader("Pragma", "no-cache"); 
     response.setHeader("Cache-Control", "no-cache"); 
     response.setHeader("Expires", "0"); 

在我的Java網頁和

寫腳本

window.history.forward(1) 

scrips在我的網頁但遺憾的是這些腳本做我的

相關問題