簡體   English   中英

當用戶在struts中注銷后單擊“后退”按鈕時,查看登錄頁面

[英]view the login page when user click back button after logout in struts

我正在struts2中進行項目,並且已經在項目中成功創建了登錄頁面和注銷頁面。 但是,當用戶注銷並單擊瀏覽器上的“后退”按鈕時,用戶可以查看已登錄的頁面。 我如何避免這種情況?

這是我的登錄頁面的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;">

請檢查。 是包含頁面會在這里引起問題。

@Jordan Arsenault在評論中所說的內容完全適用於您的問題。這是與瀏覽器緩存有關的問題,如果您已經使會話無效,那么單擊鏈接將不允許用戶執行任何操作,直到他/她登錄系統

您可以做的其他一些工作是在注銷Action類中設置HTTP標頭,也可以使用以下代碼創建自定義攔截器,例如

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

另外,您也可以將這些標頭添加到您的JSP頁面中,但是不能百分百確定服務器會尊重您的標頭,直到您以安全模式(https)進行瀏覽為止。

從郵件列表中閱讀以下主題以解決類似問題

  1. Struts2中的瀏覽器后退按鈕
  2. Browser_Cache

長期(更好)的解決方案:您應該在應用程序中實現類似於session ,也可以使用struts攔截器來過濾所有發送到服務器的請求,因此當用戶注銷時,session將被銷毀。

短時解決方案:

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

window.history.forward(1);

更新

在您的登錄頁面中:

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

我假設您對密碼保護區域具有授權控制(帶有會話)。 然后,您可以在head標簽中添加沒有標簽的meta標簽。

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

希望這可以..

內容可能只是被緩存了。

如果您的應用程序不是大量數據,則只需在任何HTML輸出之前添加非緩存標頭即可:

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.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) 

在我的頁面中滑動,但是不幸的是,這些腳本中的任何一個都對我沒有任何作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM