Meine MVC4-Anwendung wurde gemäß der mit Visual Studio 2010 gelieferten Vorlage erstellt und verwendet SimpleMembership
.Benutzer ist angemeldet, obwohl keine Benutzer in der Datenbank sind und die App neu gestartet wurde
Vor ein paar Minuten löschte ich alle Daten aus allen Tabellen in der Datenbank und startete IIS mit einem iisreset-Befehl neu. Das einzige, was vom vorherigen Leben übrig geblieben ist, sind ein paar Cookies (.ASPXAUTH
und __RequestVerificationToken_L3J1bmV0c29mdC9BdXRoVGVzdA2
) im Opera-Browser (ich habe mich vor der Bereinigung nicht ausgeloggt).
Jetzt, wenn ich versuche, Home/Index zu laden, zeigt es mir Request.IsAuthenticated == true
und User.Identity.Name
ist verfügbar - es ist der Name des letzten Benutzers.
Das gleiche passiert, nachdem ich die Anwendung neu erstellt habe.
Wie ??? !!!
Ja, es gibt ein Problem! Das Löschen eines clientseitigen Cookies zum Abmelden ist keine richtige Lösung und stellt eine große Sicherheitslücke dar, da die serverseitige Sitzung nicht zerstört wird. Ich habe die Leute immer davon abgehalten, dies zu tun, weil es eine schlechte Übung ist. Es ist keine tatsächliche Abmeldung, sondern nur das Vergessen der Schlüssel für die Sitzung. – Paul
In diesem Szenario ist vom Benutzer nur noch der Cookie übrig. Sie haben alle Daten in der Datenbank gelöscht. Wenn Ihre Sitzung in der Datenbank ist, ist sie auch weg. Wenn es in Proc oder auf einem SessionState-Server ist, kann es bestehen, aber es spielt kaum eine Rolle. Die Sitzung wird gelöscht, wenn das Zeitlimit überschritten wird. Sie können das Cookie ohne Problem löschen und die zugehörige Sitzung, falls sie noch existiert, wird natürlich verschwinden. Es besteht keine Gefahr, dass es vorübergehend existiert, da es sowieso keine Möglichkeit gibt, darauf zuzugreifen. –
Wenn Sie jedoch darüber besorgt sind, setzen Sie IIS zurück oder starten Sie den SessionState-Server neu. * Zu diesem Zeitpunkt ist keine * Sitzung mehr gültig, weil Sie alle Daten gelöscht haben, die damit verknüpft wären. –