Pregunta

Tengo problemas para crear una cookie no persistente usando 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.

Mi código se ve así:

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 la variable isPersistent es verdadera, todo funciona bien y la cookie persiste. Pero cuando isPersistent es falso, la cookie parece persistir de todos modos. Inicio sesión en una ventana del navegador, la cierro y vuelvo a abrir el navegador y aún estoy conectado. ¿Cómo configuro la cookie para que no sea persistente?

¿Una cookie no persistente es lo mismo que una cookie de sesión? ¿La información de la cookie se almacena en los datos de la sesión en el servidor o la cookie se transfiere en cada solicitud / respuesta al servidor?

¿Fue útil?

Solución

Intenta eliminar:

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

... y reemplazándolo con:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top