Ich muss einen Benutzer abmelden, wenn der Benutzer die Registerkarte oder den Browser geschlossen hat. Wie mache ich das in ASP.NET MVC?
Es gibt einige Dinge, die Sie tun können, um sicherzustellen, dass der Benutzer beim Schließen des Browsers abgemeldet wird, aber es hängt davon ab, wie Sie den FormsAuthentication-Cookie setzen:
Cookieless=True
. FormsAuthentication.SetAuthCookie
, um die Persistenz auf false
zu setzen.
window.unload
. Cookieless=True
Ansatz: Damit wird der Cookie-Wert an die Abfragezeichenfolge in jeder Anfrage angehängt. Das Problem mit diesem Ansatz ist, dass es nicht sehr sicher ist und es mit SEO übergeht. Wenn ein Benutzer jemandem die URL sendet, die er verwendet, kann sich diese Person als der ursprüngliche Benutzer anmelden (wahrscheinlich nicht das, was Sie wollen). Was SEO-Probleme anbelangt, bewirkt dies, dass die gleiche Seite für einen Googlebot anders aussieht, je nachdem, welche URL übergeben wird. Jede QueryString-Änderung macht sie zu einer neuen URL und wenn jemand dies zum Posten eines Links verwendet; Es wird die Suchergebnisse für eine gegebene tatsächliche URL verwässern.
FormsAuthenticationTicket
Ansatz Wenn Sie einen Authentifizierungscookie für den Benutzer festlegen, setzen Sie Persistent auf False
.
Wenn Sie dies in FormsAuthentication.SetAuthCookie
tun, ist dies der Standardwert. Wenn Sie die Klasse FormsAuthenticationTicket
verwenden, müssen Sie den Cookie-Ablauf angeben.
FormsAuthentication.SetAuthCookie()
Ansatz Wenn Sie persistent
nicht festlegen, wird der Authentifizierungscookie standardmäßig am Ende der Sitzung ablaufen (wenn der Benutzer den Browser schließt).
Es gibt keine narrensicheren Methoden; Alles, was Sie tun können, ist setzen Sie das Cookie-Ablaufdatum auf und hoffen, dass der Browser des Nutzers mitarbeitet. Wenn Sie wirklich, wirklich, wirklich wollen, dass der Cookie weg ist, können Sie immer einen JavaScript-Ansatz ausprobieren, aber das wird nicht funktionieren, wenn der Benutzer JavaScript deaktiviert hat.
%Vor%Es ist auch wichtig, welchen Browser Sie verwenden. Chrome kann im Hintergrund ausgeführt werden, und hält die Session-Cookies solange, bis die Zeitüberschreitung erreicht ist. - Sie werden nicht gelöscht, wenn der Browser geschlossen wird (Ich habe es auf die harte Tour herausgefunden).
Tags und Links asp.net-mvc c# asp.net authentication form-authentication