Come far scadere un cookie di sessione ASP.NET con la HttpSession ASP.NET?
-
19-08-2019 - |
Domanda
Ho creato un HttpCookie per condividere dati attraverso un sottodominio:
HttpCookie cookie = new HttpCookie("sessionGUID");
cookie.Value = value;
cookie.Domain = ".example.com";
Response.Cookies.Set(cookie);
Ho assunto con noncuranza poiché è un cookie di "sessione" (non scade) che scadrà insieme alla mia sessione ASP.NET. Naturalmente per il browser si tratta di un cookie di "sessione del browser" e non collegato alla sessione ASP.NET.
Quello che voglio fare è far scadere questi cookie di "sessione del browser" insieme alla sessione ASP.NET.
Penso di dover solo impostare Scadenza sullo stesso valore della sessione ASP.NET. Come lo determinerei programmaticamente?
Soluzione
Se devono solo essere vicini, allora qualcosa del genere:
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);
}
Il timer di sessione reimposta tutto ciò che l'utente pubblica o riceve, quindi poiché il codice è in esecuzione sul server in questo momento, il tempo rimanente sulla sessione corrente è Sessione. Timeout, diciamo 20 minuti.
Tra 20 minuti, il cookie non verrà accettato e dovrai emetterne uno nuovo.