【问题标题】:Cookies that won't delete不会删除的 Cookie
【发布时间】:2012-02-09 01:54:37
【问题描述】:

我感觉自己被饼干怪兽吃掉了。我删除了cookies,它们又回来了。 注销时,我执行以下代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        DeleteCookie("UserId");
        DeleteCookie("UserName");

        Session.Abandon();
        GoToPublicHomePage();
    }

    private void DeleteCookie(string name)
    {
        if (Request.Cookies[name] != null)
        {
            HttpCookie cookie = new HttpCookie(name);
            cookie.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(cookie);
        }
    }

就在“GoToPublicHome()”调用之前,我检查了 Request.Cookies 并且 UserId 和 UserName cookie 在响应中。

在我的 Global.asax --> 调用 GoToPublicHome 后立即执行的 Session_Start 代码中,它们又回来了......就像一分钱一样。

【问题讨论】:

  • 看来你有2个问题:为什么它会创建一个新的Cookie?为什么没有设置有效期?这是正确的吗。你能提供一个更详细的问题吗?

标签: c# cookies


【解决方案1】:

您编写的代码指示 .Net 创建一个新的 HttpCookie,而不是“仅在不存在时”创建。 在 MSDN 页面上有一个例子: http://msdn.microsoft.com/en-us/library/system.web.httpcookie.aspx

【讨论】:

  • 我对代码进行了大幅修改,但仍然遇到问题。感谢您提供的任何帮助。
  • 当用户激活“GoToPublicHomePage”这个动作时,它是否与设置了Cookie的页面在同一个上下文中?即:您在 www.example.com/login.html 上单击登录,然后在 www.example.com/private/index.html 上单击注销。您需要检查您删除的 Cookie 的“路径”属性是否与您设置的 Cookie 的路径相同
【解决方案2】:

Response.Cookies.Remove(name)怎么样?

【讨论】:

  • 尝试了所有我能想到的变化。并且 Response 不包含任何 cookie,直到我把它们放在那里。我已经尝试过 Request.Cookies.Remove,但我读到的所有内容都指向将到期日期设置为删除它们的方式。重新出现的 cookie 没有过期日期,因此它们看起来像会话 cookie 而不是域 cookie。
猜你喜欢
  • 1970-01-01
  • 2020-09-29
  • 2012-05-23
  • 2013-05-28
  • 2016-04-16
  • 2015-12-12
  • 1970-01-01
  • 2019-01-18
相关资源
最近更新 更多