删除HttpCookie不只是它的价值

时间:2015-03-13 07:33:49

标签: javascript cookies model-view-controller httpcookie

使用MVC

我正在登录时创建一个cookie,如下所示:

Response.Cookies.Add(New HttpCookie("UserId", Id))

我搜索了删除Cookie的方法,以便我可以在Logout上使用它,我发现了这个:

 If Response.Cookies("UserId") IsNot Nothing Then
                Dim c = New HttpCookie("UserId")
                c.Expires = DateTime.Now.AddDays(-1)
                Response.Cookies.Add(c)
 End If

 Response.Cookies.Clear()

在客户端,我正在做以下事情:

 document.cookie = "access_token=";

但我发现这并没有删除cookie,它只是清空它,我仍然会有一个名为UserId的cookie,其值为Nothing

现在,如果用户注销并在其后立即登录,则会导致我出现问题。

我想要做的是完全删除名为UserId的Cookie,将其从浏览器Cookie中完全删除,而不是清空其值。

有没有办法做到这一点?

修改

我认为问题在于这部分:

If Response.Cookies("UserId") IsNot Nothing Then
                    Dim c = New HttpCookie("UserId")

因为当我调试此代码时,在此行之后,我得到的Response.Cookies的数量为2 ,意味着它创建了2个具有相同名称的cookie并且变得混乱。< / p>

2 个答案:

答案 0 :(得分:0)

您错过了expires,例如:

document.cookie="access_token=; expires=Thu, 18 Dec 2013 12:00:00 UTC";

答案 1 :(得分:0)

您可以使用

ControllerContext.HttpContext.Response.Cookies.Remove("cookie name")

但你无法直接删除cookie,你必须将其设置为在当前日期之前过期,如下例所示:

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