Question

Je veux que mon cookie disparaître lorsque l'utilisateur ferme son brower-- je l'ai déjà mis des propriétés prometteuses à la recherche, mais mes biscuits pop retour à vivre même après la fermeture du navigateur entier.

HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport

Qu'est-ce que la propriété ou appel de méthode que je suis absent pour obtenir un cookie dans la mémoire?

Était-ce utile?

La solution

Cette question a été mis en ligne plus de 1000 fois. La meilleure façon de gérer les cookies délai non persistants avec l'ouverture du navigateur est d'ajouter une valeur clé pour le délai. Le code ci-dessous est utilisé pour un journal dans l'ID utilisateur et valeur de clé de sécurité de chiffrement (non inclus) pour la compatibilité du navigateur. Je n'utilise l'authentification par formulaire.

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);

Lors de la vérification de l'utilisation des cookies de valeurs clés:

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
}

J'ai trouvé des problèmes de compatibilité en utilisant l'authentification des formulaires et Google Chrome.

Autres conseils

Les témoins sans expiration aller explicitement réglée automatiquement sera loin une fois la session de navigation est terminée.

« session de navigation » signifie différentes choses pour différents navigateurs. Pour certains navigateurs, cela signifie que chaque instance du navigateur est fermé. Pour certains, il signifie simplement que les onglets correspondants ou navigateur d'origine est fermé.

Dans votre test assurez-vous fermer chaque instance du navigateur avant la réouverture de chercher le cookie. Si vous rencontrez toujours des problèmes affichent le nom du navigateur et de révision.

cookie.Expires = DateTime.MinValue;

ce cookie expirera, dès que le navigateur est fermé.

Si vous ne définissez la propriété Cookie.Expires le cookie sera expirer à la fin de la session du navigateur.

Cookie ne sera pas détruit à la fermeture du navigateur si Extrait d'ici

 HttpCookie cookie = new HttpCookie(name);
 cookie.Value = value;
 cookie.Expires = Convert.ToDateTime(“12/12/2008″);  //*difference is here*//
 Response.Cookies.Add(cookie);}

Cookie sera perdu à la fermeture du navigateur si

     HttpCookie cookie = new HttpCookie(name);
     cookie.Value = value;
     Response.Cookies.Add(cookie);}

Jetez un oeil à la variable Session ASP.NET. Cela persistera en fonction de votre navigateur et peut être configuré pour être « cookieless » ou avec un délai d'attente dur.

http://msdn.microsoft.com/ fr-fr / bibliothèque / h6bb9cz9% 28VS.71% 29.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top