Domanda

Sto riscontrando problemi nella creazione di un cookie non persistente utilizzando il FormsAuthenticationTicket. Voglio memorizzare i dati utente nel ticket, quindi non posso usare i metodi FormsAuthentication.SetAuthCookie () o FormsAuthentication.GetAuthCookie (). Per questo motivo, devo creare il FormsAuthenticationTicket e memorizzarlo in un HttpCookie.

Il mio codice è simile al seguente:

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

Quando la variabile isPersistent è vera, tutto funziona correttamente e il cookie è persistente. Ma quando isPersistent è falso, il cookie sembra comunque persistere. Accedo in una finestra del browser, la chiude e riapre il browser e ho ancora effettuato l'accesso. Come posso impostare il cookie in modo che non sia persistente?

Un cookie non persistente è uguale a un cookie di sessione? Le informazioni sui cookie sono memorizzate nei dati di sessione sul server o i cookie sono trasferiti in ogni richiesta / risposta al server?

È stato utile?

Soluzione

Prova a eliminare:

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

... e sostituendolo con:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top