Frage

Ich versuche, die Expired Eigenschaft des Benutzers aktuellen FormsAuthenticationTicket zu überprüfen, um zu sehen, ob die Authentifizierungszeit abgelaufen ist. Aber wenn die Zeit abgelaufen ist, bin ich nie in der Lage genügend Informationen zu erhalten, um selbst das Ticket erstellen zu überprüfen. Ich habe dies versucht:

FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;

Aber Mitglied ist null, wenn die Authentifizierungszeit abgelaufen ist. Also das wird 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, wird authCookie Bedeutung null sein. Also das nicht funktioniert.

Gibt es eine Möglichkeit, um tatsächlich get das FormsAuthenticationTicket Objekt, wenn die Authentifizierungszeit abgelaufen ist? Es muss sein, weil es eine „Abgelaufen“ Eigenschaft ist im Objekt. Was bin ich?

Danke.

War es hilfreich?

Lösung

Ein abgelaufenes Cookie wird von dem Client-Browser des Header weggelassen. So gibt es keine Code-Behind-Methode davon abrufen, da der Client nie es Ihnen geben wird. Es könnte möglich sein, Javascript, Cookies zu verwenden, um die rohen Cookie-Daten abrufen und in einem Post Kopf- oder AJAX-Aufruf für einen bestimmten Zweck setzen, aber ich glaube, die Javascript-Cookie-Mechanismus die gleichen Ablauf Einschränkungen wie der Browser hat. Abgelaufene Cookies nicht mehr gültig sind, und somit nicht zugänglich.

Andere Tipps

Unter der Annahme, den Browser (nur IE) nicht entfernt ein abgelaufen Cookie , ASP.Net erscheint eine abgelaufene Authentifizierung Ticket aus dem Request.Cookies Sammlung abzustreifen. Es ist immer noch da in dem Request.Header [ „Cookie“], aber in der Cookies Sammlung nicht zur Verfügung. Ich glaube, das irgendwann zwischen dem „Beginrequest“ geschieht und „AuthenticateRequest“ Veranstaltungen. Ich bin in der gleichen Ausgabe laufen und es werde zu erkunden mich weiter.

    void context_BeginRequest(object sender, EventArgs e)
    {
        string cookie = ((HttpApplication)sender).Context.Request.Cookies[".ASPXFORMSAUTHSS"].Value;
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie);
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top