2009-11-30 15 views
7

Tengo problemas para crear una cookie no persistente utilizando FormsAuthenticationTicket. Quiero almacenar datos de usuario en el ticket, por lo que no puedo usar los métodos FormsAuthentication.SetAuthCookie() o FormsAuthentication.GetAuthCookie(). Debido a esto, necesito crear FormsAuthenticationTicket y almacenarlo en una HttpCookie.Crear cookie no persistente con FormsAuthenticationTicket

Mi código es el siguiente:

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

Cuando el isPersistent variable es cierto todo funciona bien y la cookie se conserva. Pero cuando isPersistent es falso, la cookie parece persistir de todos modos. Me registro en una ventana del navegador, lo cierro y vuelvo a abrir el navegador y todavía estoy conectado. ¿Cómo configuro la cookie para que no sea persistente?

¿Es una cookie no persistente la misma que una cookie de sesión? ¿La información de las cookies está almacenada en los datos de sesión en el servidor o se transfiere la cookie en cada solicitud/respuesta al servidor?

Respuesta

3

trate de borrar:

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

... y su sustitución por:

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

Cuestiones relacionadas