单击退出时删除 cookie
Posted
技术标签:
【中文标题】单击退出时删除 cookie【英文标题】:Delete cookie on clicking sign out 【发布时间】:2011-10-28 02:49:49 【问题描述】:我正在使用下面的代码创建 cookie,如何在另一个页面中读取 txtusername 值以及如何在(退出代码)。我是编程新手,请帮忙。
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chkPersistCookie.Checked)
ck.Expires = tkt.Expiration;
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
【问题讨论】:
你真的不应该像那样替换你的整个代码。这与 11 分钟前的问题不同 【参考方案1】:您不应该将 password 存储为 cookie。这是一个非常大的安全威胁。要删除 cookie,您实际上只需要修改并使其过期。您不能真正删除它,即将它从用户的磁盘中删除。看看这个documentation。
这是一个示例:
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
Response.Cookies.Add(aCookie); // overwrite it
【讨论】:
【参考方案2】:您不能直接删除cookie,您必须将其设置为在当前日期之前过期:
if (Request.Cookies["clienDetails"] != null)
HttpCookie myCookie = new HttpCookie("clienDetails");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
您可以阅读更多关于它的信息here。
此外,我真的鼓励您不要编写自己的安全性,而是阅读asp.net membership。更安全,更易于使用。我可以看到您的安全模型中存在许多缺陷。将密码以纯文本形式存储在 cookie 中真的很糟糕。
编辑: 由于您现在更改了代码,因此您必须这样做才能删除 cookie:
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
【讨论】:
好的,谢谢,但是如何读取 txtusername 值。当我存储密码和电子邮件 ID 而不加密 if(Request.Cookies["Cookiename"] != null) Label8.文本 = Request.Cookies["cookiename"].Values["client_ID"].ToString(); @Gokul 试试 User.Identity.Name【参考方案3】:仅供参考,这对我使用 Chrome 69
并启用了 Continue where you left off
功能不起作用。 Firefox 的类似问题。禁用此功能对我有用。
见
Chrome doesn't delete session cookies How to delete or expire a cookie in Chrome using Asp.Net【讨论】:
【参考方案4】:在我的情况下,这段代码有效:
Response.Cookies.Delete("access_token");
return Ok();
【讨论】:
以上是关于单击退出时删除 cookie的主要内容,如果未能解决你的问题,请参考以下文章