38

可能重复:
单击退出时删除 cookie

我想在用户注销时删除 cookie。

这是我的代码:

 if (HttpContext.Current.Request.Cookies["currentUser"] != null)
 {
     DeleteCookie(HttpContext.Current.Request.Cookies["currentUser"]);
 }


       public void DeleteCookie(HttpCookie httpCookie)
        {
            try
            {
                httpCookie.Value = null;
                httpCookie.Expires = DateTime.Now.AddMinutes(-20);
                HttpContext.Current.Request.Cookies.Add(httpCookie);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

但它不起作用。你有什么建议吗?

4

4 回答 4

73
 HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies["currentUser"];
 HttpContext.Current.Response.Cookies.Remove("currentUser");
 currentUserCookie.Expires = DateTime.Now.AddDays(-10);
 currentUserCookie.Value = null;
 HttpContext.Current.Response.SetCookie(currentUserCookie);

有用。

于 2012-08-24T21:19:35.050 回答
20

您应该将Response'scookie更改Expires为过去的值,而不是添加 cookie:

if (Request.Cookies["currentUser"] != null)
{
    Response.Cookies["currentUser"].Expires = DateTime.Now.AddDays(-1);   
}

旁注:而不是throw ex你应该只throw保留它的堆栈跟踪。C#:抛出自定义异常最佳实践

于 2012-08-24T20:56:59.703 回答
0

将 cookie(过期)添加到 HttpContext.Current.Response.Cookies 集合中。请求用于读取服务器发送的 cookie - 响应用于将 cookie 发送回客户端。

于 2012-08-24T20:56:10.017 回答
-1

也许您可以使用 Response.Cookies.Clear() 或 Response.Cookies.Remove()。

于 2012-08-24T20:57:54.257 回答