我希望我的cookie在用户关闭眉毛时会消失 - 我已经设置了一些有希望的外观属性,但是即使关闭了整个浏览器,我的cookie又弹出了。

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

我缺少什么属性或方法来实现内存曲奇?

有帮助吗?

解决方案

这个问题已在线发布1000次以上。使用浏览器打开的非持久性cookie超时的最佳方法是为超时增加一个键值。下面的代码用于登录用户ID键值和加密(未包括)浏览器兼容性的安全性。我不使用表格身份验证。

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

检查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
}

我发现使用表格身份验证和Google Chrome发现了兼容性问题。

其他提示

一旦浏览会话结束,没有明确设置的没有到期的cookie将自动消失。

现在,“浏览会话”对不同的浏览器意味着不同的内容。对于某些浏览器,这意味着浏览器的每个实例都关闭。对于某些人来说,这只是意味着关闭了相关的选项卡或原始浏览器。

在测试中,请确保在重新打开以寻找cookie之前关闭浏览器的每个实例。如果您在浏览器名称和修订后继续遇到问题。

cookie.Expires = DateTime.MinValue;

浏览器关闭后,该饼干将过期。

如果您不设置cookie.expires属性,则将cookie设置为在浏览器会话结束时到期。

如果cookie不会在浏览器关闭上破坏 从这里取

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

如果cookie会在浏览器关闭的情况下丢失

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

看一下ASP.NET Session 多变的。这将取决于您的浏览器,并且可以设置为“烹饪”或暂时的暂停。

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28vs.71%29.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top