Frage

Ich habe Probleme, eine nicht-persistente Cookie Erstellen des FormsAuthenticationTicket verwendet wird. Ich mag im Ticket speichern Nutzerdaten, also kann ich nicht verwenden FormsAuthentication.SetAuthCookie () oder FormsAuthentication.GetAuthCookie () Methoden. Aus diesem Grund muss ich die FormsAuthenticationTicket erstellen und speichern sie in einer Http.

Mein Code sieht wie folgt aus:

DateTime expiration = DateTime.Now.AddDays(7);

// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,
    user.Email,
    DateTime.Now,
    expiration,
    isPersistent,
    userData,
    FormsAuthentication.FormsCookiePath);

// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.Path = FormsAuthentication.FormsCookiePath;
if (isPersistent)
    cookie.Expires = expiration;

// Add cookie to response
HttpContext.Current.Response.Cookies.Add(cookie);

Wenn die Variable isPersistent wahr ist, funktioniert alles einwandfrei und das Cookie anhielt. Aber wenn isPersistent falsch ist das Cookie scheint trotzdem beibehalten werden. Ich melde in einem Browser-Fenster schließt es und öffnet den Browser erneut, und ich bin immer noch angemeldet. Wie kann ich das Cookie nicht-persistent?

Ist ein nicht-persistente Cookie das gleiche wie ein Session-Cookie? Sind die Cookie-Informationen in der Session auf dem Server gespeichert sind oder die übertragene Cookie in jeder Anfrage / Antwort auf den Server?

War es hilfreich?

Lösung

Versuchen Löschen:

if (isPersistent) { cookie.Expires = expiration; }

... und ersetzt sie durch:

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top