¿Cómo hacer que una cookie de sesión ASP.NET caduque con la HttpSession de ASP.NET?

StackOverflow https://stackoverflow.com/questions/347227

  •  19-08-2019
  •  | 
  •  

Pregunta

He creado una HttpCookie para compartir datos en un subdominio:

HttpCookie cookie = new HttpCookie("sessionGUID");
cookie.Value = value;
cookie.Domain = ".example.com";

Response.Cookies.Set(cookie);

Asumí descuidadamente ya que es una cookie de 'sesión' (sin caducidad) que caducaría junto con mi sesión ASP.NET. Por supuesto, para el navegador, esta es una cookie de 'sesión de navegador' y no está vinculada a la sesión ASP.NET.

Lo que quiero hacer es caducar estas cookies de 'sesión del navegador' junto con la sesión ASP.NET.

creo que solo necesito establecer Expires en el mismo valor que la sesión ASP.NET. ¿Cómo determinaría esto programáticamente?

¿Fue útil?

Solución

Si solo necesitan estar cerca, entonces algo como esto:

int expirationMinutes = Session.Timeout;
if (System.Web.HttpContext.Current.Response.Cookies["monster"]!=null)
{
    System.Web.HttpContext.Current.Response.Cookies["monster"].Expires =
                                 DateTime.Now.AddMinutes(expirationMinutes);
}

El temporizador de sesión restablece todo lo que el usuario publica u obtiene, por lo que dado que el código se está ejecutando en el servidor en este momento, el tiempo restante en la sesión actual es Session.Timeout, digamos 20 minutos.

En 20 minutos, la cookie no será aceptada y tendrá que emitir una nueva.

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