Wie melde ich einen Benutzer, wenn er seinen Browser oder seine Registerkarte in ASP.NET MVC schließt?

8

Ich muss einen Benutzer abmelden, wenn der Benutzer die Registerkarte oder den Browser geschlossen hat. Wie mache ich das in ASP.NET MVC?

    
RandomUser 13.05.2014, 13:32
quelle

1 Antwort

24

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:

  1. Verwenden Sie Cookieless=True .
  2. Legen Sie ein FormsAuthenticationTicket so fest, dass es nicht persistent ist
  3. Verwenden Sie FormsAuthentication.SetAuthCookie , um die Persistenz auf false zu setzen.
  4. Verwenden Sie einen JavaScript-Ansatz, um das Cookie auf window.unload .
  5. zu entfernen

Cookieless=True Ansatz:

%Vor%

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.

%Vor%

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

%Vor%

JavaScript-Ansatz:

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%

Andere Einschränkungen

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

    
George Stocker 13.05.2014, 13:47
quelle