在注销时删除cookie

时间:2012-10-10 18:11:03

标签: asp.net cookies

在主页的页面加载中,我设置了一个这样的cookie: -

if (abc == true)
{
    HttpCookie cookie = new HttpCookie("Administrator");
    cookie.Value = "Admin";
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.SetCookie(cookie);
}

并将cookie用作: -

if (Request.Cookies["Administrator"] != null)
{
    if (Request.Cookies["Administrator"].Value == "Admin")
        //some code
}

注销时,我希望此cookie过期或被删除。所以我写了: - Seesion.Abandon();

现在即使我退出后,当我重新登录主页时... 第Request.Cookies["Administrator"]行不是空的。

奇怪...!请告诉我这是什么原因和解决方案。

4 个答案:

答案 0 :(得分:10)

来自MSDN DOCUMENTATION

  

您无法直接删除用户计算机上的Cookie。但是,你   可以通过设置来指示用户的浏览器删除cookie   cookie的过期日期到过去的日期。下次用户制作时   请求设置cookie的域或路径中的页面   浏览器将确定cookie已过期并将其删除。

你可以这样做:

if (Request.Cookies["Administrator"] != null)
{
    HttpCookie myCookie = new HttpCookie("Administrator");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}

答案 1 :(得分:7)

您必须指定过去的过期日期才能删除特定Cookie:

HttpCookie myCookie = new HttpCookie("Administrator");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);

更多信息可以在这篇msdn文章中找到:

How to: Delete a Cookie

答案 2 :(得分:6)

您可以尝试使用

Seesion.Abandon();
Response.Cookies.Clear();

或者

YourCookies.Expires = DateTime.Now.AddDays(-1d);

链接:http://msdn.microsoft.com/en-us/library/ms178195%28v=vs.100%29.aspx

答案 3 :(得分:4)

在我看来,你的行

cookie.Expires = DateTime.Now.AddDays(-1);

应该立即使你的cookie过期。

如果你输错了那么好消息!您可以通过设置过去的到期日期来使您的cookie过期。

相关问题