2016-05-02 9 views
0

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 ??? !!!

Antwort

0

Das ist ein bisschen seltsam, ich gebe zu. Meiner Erfahrung nach wird eine Ausnahme ausgelöst, wenn der Benutzer, der das Cookie unterstützt, ausfällt, aber ich gestehe, dass ich eine Weile auf Identity ausgeführt habe und mich nicht daran erinnere, ob die Situation unter ASP.NET die gleiche war Mitgliedschaft.

Abgesehen von Neugier, gibt es hier ein Problem? Löschen Sie den .ASPXAUTH-Cookie und fahren Sie mit Ihrem Unternehmen fort. Es ist unwahrscheinlich, dass dies außerhalb einer Entwicklungsumgebung jemals ein Problem sein wird, da Sie in einer Produktionsumgebung sowieso keine Benutzer löschen sollten.

+0

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

+0

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. –

+0

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. –