Come creare un non-persistenti (in memoria) http biscotto in C #?
-
12-10-2019 - |
Domanda
Voglio che il mio biscotto a scomparire quando l'utente chiude la loro brower-- Ho già impostare alcune proprietà promettenti alla ricerca, ma i miei biscotti pop torna a vivere anche dopo la chiusura l'intero browser.
HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport
Quali proprietà o il metodo di chiamata mi sto perdendo per ottenere un biscotto in memoria?
Soluzione
Questa domanda è stata pubblicata on-line 1000+ volte. Il modo migliore per gestire i cookie non persistenti timeout con l'apertura del browser è aggiungere un valore chiave per il timeout. Il codice di seguito viene utilizzato per un log in id utente valore della chiave e la crittografia (non incluso) di sicurezza per la compatibilità del browser. Io non uso l'autenticazione moduli.
HttpCookie cookie = new HttpCookie(name);
cookie.Values["key1"] = value;
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString();
//timeout 70 minutes with browser open
cookie.Expires = DateTime.MinValue;
cookie.Domain = ConfigurationManager.AppSettings["website_domain"];
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
Quando si controlla l'uso valore della chiave di cookie:
try
{
DateTime dateExpireDateTime;
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]);
if (DateTime.Now > dateExpireDateTime)
{
//cookie key value timeout code
}
else
{
//reset cookie
}
catch
{
//clear cookie and redirect to log in page
}
ho trovato problemi di compatibilità con autenticazione basata su form e Google Chrome.
Altri suggerimenti
Biscotti senza una scadenza impostato in modo esplicito verrà automaticamente andare via una volta la sessione di navigazione è finita.
Ora, "la navigazione sessione" significa cose diverse per diversi browser. Per alcuni browser che significa che ogni istanza del browser viene chiuso. Per alcuni significa solo che le schede rilevanti o del browser originale viene chiuso.
Nel vostro test assicurarsi di chiudere tutte le istanze del browser prima di riaprire a cercare il cookie. Se si continua ad avere problemi di inviare il nome del browser e la revisione.
cookie.Expires = DateTime.MinValue;
questo cookie scadrà, non appena la chiusura del browser.
Se si fa nessun set la proprietà Cookie.Expires il cookie viene impostato per scadere alla fine della sessione del browser.
Cookie non sarà distruggere il navigatore vicino se Tratto da qui
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = Convert.ToDateTime(“12/12/2008″); //*difference is here*//
Response.Cookies.Add(cookie);}
Cookie sarà perso nel browser vicino se
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
Response.Cookies.Add(cookie);}
Date un'occhiata alla variabile Session
ASP.NET. Questo persisterà a seconda del browser e può essere impostato per essere "cookie" o con un timeout difficile.
http://msdn.microsoft.com/ it-it / library / h6bb9cz9% 28VS.71% 29.aspx