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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top