2

Dies ist eine sehr berühmte Fragen in Google. Ich habe mehrere Vorschläge gefunden, um dieses Feature zu erreichen. Die von mir implementierte Prozedur ist unten beschrieben:Verhindern der Seitenüberprüfung nach dem Abmelden

Ich habe einen Logout-Link auf der Homepage hinzugefügt und wenn ich auf diesen Link klicke, leite ich den Benutzer auf die Logout-Seite um.

protected void LinkButton1_Click(object sender, EventArgs e) {  
    Response.Redirect("../Logout.aspx"); 
} 

Jetzt im Logout.aspx habe ich hinzugefügt:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); 
Response.Cache.SetNoStore(); 
Response.AppendHeader("Pragma", "no-cache"); 

in der Page_Load-Methode Code hinter. Dies wird Umleitung

protected void Timer1_Tick(object sender, EventArgs e) { 
    FormsAuthentication.SignOut(); 
    Session.Abandon(); 
    FormsAuthentication.RedirectToLoginPage(); 
} 

zum Login.aspx von Logout.aspx:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick" > 
</asp:Timer> 

Die Timer1_Tick Methode ist: hinzugefügt Ich habe eine asp:ScriptManager und asp:Timer zu diesem Logout.aspx

auch. Ich habe auch die folgende JavaScript-Methode in den Logout.aspx hinzugefügt:

function disableBackButton() { 
    window.history.forward(1); 
} 
disableBackButton(); 
window.onload = disableBackButton(); 
window.onpageshow = function (evt) { if (evt.persisted) disableBackButton() } 
window.onunload = function() { void (0) } 

Und es funktioniert nur, wenn ich auf die Schaltfläche Zurück Klick oder klicken Sie mehrmals mit Pause. Aber wenn es mehrmals hintereinander angeklickt wird, werde ich wieder auf der Startseite platziert.

Wie kann ich dieses Problem lösen?

Antwort

1

Ich benutze die folgende Abmeldung, wo ich die Cookies lösche, und ich hatte keine Probleme, meine Benutzer "für echt" einzuloggen.

bearbeiten:

Beachten Sie, dass der Browser oft die Seiten in seiner Geschichte zwischenzuspeichern, und ich glaube nicht, dass man sie von der Anzeige der Seiten verhindern kann, nach einem Logout!

FormsAuthentication.SignOut(); 
Session.Abandon(); 

// clear authentication cookie 
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, ""); 
cookie1.Expires = DateTime.Now.AddYears(-1); 
Response.Cookies.Add(cookie1); 

// clear session cookie 
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", ""); 
cookie2.Expires = DateTime.Now.AddYears(-1); 
Response.Cookies.Add(cookie2); 

FormsAuthentication.RedirectToLoginPage(); 
+0

Vielen Dank. Dies ist eine nützliche Methode und ich werde sie benutzen. Aber das löst mein Problem nicht. Gibt es eine Möglichkeit, den Cache vollständig zu löschen oder zu deaktivieren? –

+0

Es wurde gelöst. Ich habe No-Cache auf die Homepage festgelegt (ähnliche Vorgehensweise in Page_Load of Logout.aspx). Vielleicht muss ich No-Cache-Option auf die Seite Page_Load der Masterseite festlegen, da es von der Homepage geerbt wird. Habe ich recht? –

1

Fügen Sie den folgenden Code hinzu Page_Load Master-Seite zusammen mit den anderen in der Frage beschriebenen Techniken:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); 
Response.Cache.SetNoStore(); 
Response.AppendHeader("Pragma", "no-cache"); 

Es funktioniert.

+0

Vielen Dank Tapas, es hilft mir ...... – Pritesh

+0

@ Pritesh Sie sind willkommen. –