OWIN - Lösche Cookies beim Abmelden von MVC

9

Ich habe Probleme beim Löschen von Cookies beim Abmelden des Benutzers.

Ich lerne MVC Asp.Net und ich habe Standard-MVC5-Anwendung erstellt. Ich habe mich registriert und logge mich mit Konten ein, alles in Ordnung. aber wenn ich abmelde, funktioniert es, es leitet mich auf die Homepage weiter, aber es löscht die Cookies nicht.

Ich überprüfe Cookies mit dieser Erweiterung von chrome "Edit This Cookie" .

Zuerst melde ich mich an, kopiere dann den Cookie mit der EditThisCookie-Erweiterung, melde mich ab und lösche die Cookies. Wenn ich jetzt den kopierten Cookie in die EditTshiCookie-Erweiterung einfüge und die Seite aktualisiere, logge ich mich mit demselben Konto ein. Cookies werden nicht gelöscht.

LogOff-Methode

%Vor%

Ich habe das versucht von diese Frage

%Vor%     
Huda Noor 22.02.2016, 09:30
quelle

3 Antworten

2

Ihre Art, die Cookie-basierte Authentifizierung zu verstehen, ist falsch:)

  1. Bei der Anmeldung in der App wird ein Authcookie erstellt, der Informationen zur Authentifizierung und zu Ansprüchen (Berechtigungen) des Benutzers enthält. Nichts wird in Serversitzung geschrieben oder auf andere Weise beibehalten.
  2. Bei jeder Anfrage nach der Anmeldung wird das Cookie entschlüsselt und verifiziert, wenn der Benutzer noch authentifiziert ist. Wenn es wahr ist, entschlüsselt es Ansprüche, damit sie später von AuthorizeAttribute verwendet werden können.
  3. Abmelden entfernt diesen Cookie vom Browser, aber wenn Sie in irgendeiner Weise diesen Cookie beibehalten und ihn erneut in eine andere Anfrage eingefügt haben, wird er glauben, dass er noch authentifiziert und gültig ist.

Session.Abandon wird nicht helfen, weil DefaultAuthenticationTypes.ApplicationCookie nicht auf Sitzungen basiert.

Wenn dies nicht erwünscht ist. Sie können möglicherweise ein Flag ( IsAuthorized ) zur Sitzung hinzufügen und einchecken. Global.asax Application_PreRequestHandlerExecute und leite dann zum Login-Formular um. Auf diese Weise erhalten Sie Informationen auf Server- und Clientseite. Aber denken Sie daran, dass, wenn der Server-Sitzungsstatus fehlschlägt (zB Neustart von IIS) alle tatsächlich angemeldeten Benutzer abgemeldet werden.

Weitere Informationen zur Cookie-basierten Authentifizierung link

    
RedgoodBreaker 03.01.2017 09:25
quelle
0

Beantworten Sie trotzdem sehr spät und versuchen Sie, die Last des Stack-Overflows unbeantwortet zu lassen.

Um jede Anfrage zu identifizieren, weist der Server jedem Benutzer der Webanwendung eine eindeutige Sitzungs-ID zu. Der Server identifiziert den Benutzer anhand der Sitzungs-ID . Serverseitige Sitzungen des Benutzers werden auf Sitzungs-ID zugewiesen. Betrachten Sie es als Modell unten.

%Vor%

(Wenn Sie die Cookie-Sitzung verlassen, werden alle zugehörigen .NET-Sitzungen vom Server entfernt)

Wenn Sie also das Sitzungscookie vom Browser löschen, identifiziert der Server die Anfrage nicht und behandelt sie als neue Anfrage und es sieht so aus, als ob der Benutzer abgemeldet wurde.

Da jedoch die Sitzung nicht vom Server verlassen / entfernt wurde, identifiziert der Server beim Versuch, den Wert der kopierten Sitzung erneut im Browser zu verwenden, die Sitzungs-ID der Anfrage und der Benutzer wird erneut angemeldet .

Sie können dies auch mit einem anderen Browser und einer anderen Maschine versuchen.

    
Gaurav Singh Jantwal 01.11.2016 15:00
quelle
-1

Dieser hat für mich funktioniert ..

%Vor%

und das Javascript mögen

%Vor%     
Michael Rugi 08.02.2018 13:37
quelle