Ich versuche, die Expired-Eigenschaft des aktuellen FormsAuthenticationTicket des Benutzers zu überprüfen, um festzustellen, ob der Authentifizierungszeitraum abgelaufen ist. Aber wenn die Frist abgelaufen ist, kann ich nie genug Informationen bekommen, um das Ticket zu erstellen. Ich habe es versucht:ASP.NET: Wie bekomme ich das FormsAuthenticationTicket-Objekt, wenn die Authentifizierung abgelaufen ist?
FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
Aber Benutzer ist null, wenn der Authentifizierungszeitraum abgelaufen ist. Das wird also nicht funktionieren. Ich habe dies versucht:
HttpCookie authCookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
aber die Formen Plätzchen weg ist, wenn die Authentifizierungszeit abgelaufen ist, authCookie bedeutet null sein wird. Das funktioniert also nicht.
Gibt es eine Möglichkeit, tatsächlich das FormsAuthenticationTicket-Objekt zu erhalten, wenn der Authentifizierungszeitraum abgelaufen ist? Es muss sein, da eine "Expired" -Eigenschaft im Objekt vorhanden ist. Was vermisse ich?
Danke.
Ich denke, die abgelaufene Eigenschaft der Cookie funktioniert nur, wenn der Client ein ungültiges Datum/Uhrzeit hat. – Greg
Ich glaube, diese Antwort ist ein bisschen irreführend. Der Ablauf des Authentifizierungstickets unterscheidet sich tatsächlich von der Ablaufzeit des Cookies. Die Erstellung des Cookies ist ein separater Aufruf, und obwohl es üblich ist, denselben Ablaufzeitraum zu verwenden, können Sie sie anders festlegen. Ich habe nicht verifiziert, aber ich glaube, dass Tim Irwin richtig ist, dass ASP.NET den Cookie entfernt, wenn er ein abgelaufenes Ticket entdeckt. –