ich damit, mich für ein paar Tage zu kämpfen hatte.
Mit dem IE spezifischen ‚document.execCommand('ClearAuthenticationCache');
‘ ist nicht für jedermann eine gute Wahl: 1) es alle Anmeldeinformationen spült, was bedeutet, dass der Benutzer zum Beispiel auch von seiner gmail oder einer anderen Webseite abgemeldet, wo er zur Zeit authentifiziert hat 2) es ist nur IE;)
Ich habe versucht mit Session.Abandon() und dann auf meine Default.aspx umleiten. Dies allein reicht nicht aus. Sie müssen dem Browser explizit mitteilen, dass die Anfrage nicht autorisiert wurde. Sie können dies tun, indem sie mit so etwas wie:
response.StatusCode = 401;
response.Status = "401 Unauthorized";
response.AddHeader("WWW-Authenticate", "BASIC Realm=my application name");
resp.End();
Dies führt in der folgenden: Der Benutzer klickt auf den Logout-Button ==> wird er den Grund Login-Fenster. JEDOCH: Wenn er die Escape-Taste drückt (der Anmeldedialog verschwindet) und die Aktualisierung anklickt, sendet der Browser automatisch die Zugangsdaten erneut, was dazu führt, dass sich der Benutzer anmeldet, obwohl er denkt, dass er ausgeloggt ist.
Der Trick, um dies zu lösen, ist immer ein einzigartiges 'Reich' spucken. Dann sendet der Browser die Anmeldeinformationen in dem oben beschriebenen Fall NICHT erneut. Ich entschied mich dafür, das aktuelle Datum und die Uhrzeit auszuspucken.
response.StatusCode = 401;
response.Status = "401 Unauthorized";
string realm = "my application name";
response.AddHeader("WWW-Authenticate", string.Format(@"BASIC Realm={0} ({1})", realm, DateTimeUtils.ConvertToUIDateTime(DateTime.Now)));
resp.End();
Eine andere Sache, die Sie tun müssen, ist dem Browser mitteilen, die Seite nicht cachen:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetNoStore();
Mit all diesen Dingen im Ort, um es (für mich) in IE funktioniert, aber bis jetzt habe ich war noch nicht in der Lage zu verhindern, dass firefox den Benutzer anmeldet, wenn der Benutzer zuerst die Escape-Taste drückt (verbirgt den Basis-Login-Dialog) und dann aktualisiert (F5) oder die Zurück-Taste des Browsers.
wenn ich zurückklicke, bin ich noch authentifiziert. geschütztes void logOut_Click (Objektabsender, EventArgs e) { Session.Clear(); Sitzung.Abandon(); ViewState.Clear(); FormsAuthentication.SignOut(); Response.Redirect ("http://www.google.org"); } – willyconnor