注销时删除登录cookie

Removing sign in cookies on sign out

本文关键字:cookie 登录 删除 注销      更新时间:2023-09-26

我在使用cookie时遇到了问题,并且出现了一些奇怪的行为。目前,cookie在登录时设置如下:

document.cookie = "cookie1=" + cookie1 + "; expires=0; path=/";
document.cookie = "basicAuth=" + basicAuth + "; expires=0; path=/";
document.cookie = "cookie2=" + cookie2 + "; expires=0; path=/"

这很好。我在标题中有一个注销按钮,点击后会执行以下操作:

document.cookie = "cookie1=";
document.cookie = "basicAuth=";
document.cookie = "cookie2=";

在标题脚本中,我有一个简单的检查,看看cookie1是否为空,并隐藏标题导航栏,如果是,则重定向到登录:

if (getCookie("cookie1") == "") {
    $(".navbar").css({"display":"none"});
    window.location.href = "/signin";
}

现在我可以第一次有效地注销,但重新登录和再次注销似乎无法正常工作。我仍然可以看到导航栏,重定向似乎只能选择性地工作。有没有更好的方法来设置或删除cookie?

当你删除cookie时,你还应该添加日期和路径,并且日期应该在过去才能删除cookie,所以类似

document.cookie = "cookie1=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";

说明书上写着

若要删除cookie,服务器将返回一个带有过去的过期日期服务器将在仅当设置Cookie标头与创建Cookie时使用的值匹配。

如果您使用为您设置名称、值、UTC时间戳等的辅助函数,而不是每次设置或获取cookie时都这样做,那么在Javascript中使用cookie通常更容易。

你所做的只是将cookie设置为一个空字符串,它从未真正被删除。