使用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>
答案 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);