Le cookie expire lorsque la session du navigateur se termine
Ma recherche indique que, si je crée un cookie, et de ne pas définir la date d'expiration, il expirera lorsque le navigateur est fermé.
J'ai donc créé un cookie comme ceci:
Response.Cookies.Set(new HttpCookie("MyKey", "X"));
Mais lorsque je ferme le navigateur et ouvrez-la de nouveau, l'expression suivante est égale à true:
Request.Cookies["MyKey"] != null
Comment puis-je avoir le cookie expire lors de la session du navigateur se termine?
Remarque: Pour mes fins, à l'aide de données statiques au lieu d'un cookie me semble idéal. Mais ma compréhension est qu'un ASP.NET pouvez redémarrer pour une variété de raisons, et qui pourrait tirer le tapis de sous les de l'utilisateur courant si j'ai perdu ce paramètre.
source d'informationauteur Jonathan Wood
Vous devez vous connecter pour publier un commentaire.
Il semble que le problème est que Stober décrit. Vous pouvez définir un cookie expire à la fin de la session du navigateur par réglage de la
HttpCookie.Expires
propriétéDateTime.MinDate
ou de ne pas définir la propriété.Cependant, au moins avec google Chrome, pick-up-où-vous-gauche-off paramètres, il apparaît que la session du navigateur ne prend pas nécessairement fin lorsque le navigateur se ferme. Lorsqu'il est fermé, puis rouvert, le navigateur Chrome reprend là où il l'avait laissé, comme si la session ne s'est jamais terminée. Cela suppose de continuer à utiliser des cookies expirent à la fin de la session.
J'ai essayé mon code sur FireFox. La fermeture et la réouverture du navigateur causé l'expiration du cookie, exactement comme prévu.
Ainsi, alors il ya quelques règles générales, en fin de compte ce comportement est tout à fait à l'navigateur.
Vous pouvez prendre ce sur la prochaine
Session_start
événement. Si vous avez déjà un utilisateur authentifié immédiatement lorsqu'une toute nouvelle session commence, alors vous devez avoir eu cette info à partir d'un état de cookie. Juste null les infos de l'utilisateur et de laisser la Connexion redirige prendre soin de tout le reste.Quelque chose comme cela dans
global.asax.cs
:Voir aussi:
Il suffit de régler le
Expires
propriété de votreHttpCookie
instance deDateTime.MinDate
et expirera après la session du navigateur se termine.Cependantc'est en fait pas un moyen sûr de protéger quelque chose avec les cookies, parce que les cookies ne sont en fait valables pour toujours. Il dépend de la mise en œuvre du client si les cookies sont jetés ou pas. Si une mauvaise personne intercepte vos cookies, ils auront accès à jamais.
Voir aussi: MSDN
Cookie.Expires
de la Propriété