In ASP.NET MVC gibt es keinen einzigen Befehl "logout", der die Windows -Authentifizierungsanmeldung auf magische Weise behandelt. Die Windows -Authentifizierung wird auf dem Betriebssystem und der IIS -Ebene nicht nur in Ihrer Anwendung behandelt. Ihre Anwendung muss dem Browser und dem IIS signalisieren, um die authentifizierte Sitzung zu beenden. Hier sind die gemeinsamen Ansätze:
1. Formulare Authentifizierung (einfachste, wenn möglich empfohlen):
Wenn Sie * eine * Flexibilität in Ihrem Setup haben, besteht die einfachste und sauberste Lösung darin, auf Formulare Authentifizierung zu wechseln . Die Windows -Authentifizierung ist unflexibel und eng mit der Benutzerverwaltung des Servers verbunden. Mit der Formulare Authentifizierung können Sie Benutzerkonten in Ihrer Anwendung verwalten und einen einfachen Abmeldemechanismus bieten. Anschließend wird ein einfaches "FormsAuthentication.Signout ()` In Ihrer Controller -Aktion das Abmelden behandeln.
`` `csharp
[Httppost]
öffentliche actionResult logoff ()
{
FormsAuthentication.signout ();
return reutirectToAction ("Index", "Home"); // Umleiten Sie zu Ihrer Startseite
}
`` `
2. Eine neue Anfrage erzwingen (Windows -Authentifizierung):
Wenn Sie * die Windows-Authentifizierung verwenden müssen, müssen Sie eine neue Anfrage auslösen, die eine Neuauthentifizierung (oder keine Fehlen) erzwingt. Es gibt keinen direkten Befehl "Anmeldung". Sie zerstören im Wesentlichen das Session Cookie:
* zu einer speziellen URL weiterleiten: Erstellen Sie eine Controller -Aktion, die keine Authentifizierung erfordert. Diese Aktion tut nichts außer Umleitung. Der wichtige Teil ist, dass diese Umleitung das vorhandene Authentifizierungs -Cookie löscht. Der Browser sendet eine neue Anfrage und IIS wird erkennen, dass es keine gültige Sitzung gibt.
`` `csharp
[Denanonyme] // Das ist entscheidend! Ermöglicht den Zugriff ohne Authentifizierung
öffentliche actionResult logoff ()
{
return Redirect ("/"); // oder zu einer URL, die keine Authentifizierung erfordert
}
`` `
* Cookies löschen (Client -Seite JavaScript - weniger zuverlässig): Dieser Ansatz ist im Allgemeinen weniger bevorzugt, da er auf kundenseitigen Aktionen beruht und möglicherweise nicht immer zuverlässig über Browser hinweg funktioniert:
`` `JavaScript
document.cookie ="ASP.NET_SessionId =;
// benötigen möglicherweise zusätzliche Zeilen, um andere Authentifizierungs -Cookies zu entfernen, die für Ihr Setup spezifisch sind.
window.location.href ="/logoff"; // Umleiten
`` `
Wichtige Überlegungen zur Windows -Authentifizierung:
* IIS -Einstellungen: Stellen Sie sicher, dass die IIS -Einstellungen Ihrer Anwendung für die Windows -Authentifizierung korrekt konfiguriert sind.
* Sitzungsverwaltung: Die Windows -Authentifizierung stützt sich häufig auf der Sitzungsverwaltung des Servers (IIS -Sitzungsstatus). Die obige Umleitungsmethode beendet die Sitzung effektiv, indem eine neue Anfrage ohne Authentifizierungs -Cookie erzwungen wird.
* Mehrere Cookies: Abhängig von Ihrem Setup gibt es möglicherweise mehrere Cookies im Zusammenhang mit der Authentifizierung. Möglicherweise müssen Sie diese explizit löschen (obwohl die Umleitungsmethode normalerweise ausreicht).
* Kerberos: Wenn Kerberos beteiligt ist (häufig in Unternehmensumgebungen), kann der Abmeldungsprozess komplexer sein, da Kerberos -Tickets ihren eigenen Lebenszyklus und eine eigene Verwaltung haben.
Empfehlung:
Erwägen Sie ernsthaft, auf Formulare Authentifizierung zu wechseln, wenn Sie eine Kontrolle über Ihr Projekt haben. Es ist weitaus einfacher, Benutzersitzungen und Abmeldungen zu verwalten. Der Umgang mit Windows -Authentifizierungsanmeldungen ist von Natur aus komplexer und weniger zuverlässiger. Die obigen Ansätze funktionieren, beruhen jedoch auf indirekte Methoden zur Beendigung der Windows -Sitzung. Testen Sie immer gründlich über verschiedene Browser.