res.clearCookie函数不会删除cookie

时间:2019-09-04 15:05:45

标签: javascript node.js typescript express cookies

我正在为我的express(带有打字稿)应用程序创建一个授权系统,我使用JWT并将它们保存到cookie中以保持用户登录。我在注销部分和res.clearCookie()上都没有问题删除Cookie。

我在索引文件中使用了cookie解析器,并且尝试将cookie重置为现在的空值或到期日期,但是它对我不起作用。如前所述,res.clearCookie(“ jwt”)也不起作用。所有依赖项都是最新的。

“登录和登录验证”工作正常,我可以正确设置和读取JWT(并对其进行解码)。

登录代码的主要部分

res.cookie("jwt", token, {
   httpOnly: true,
   expires: new Date(
       Date.now() + 1000 * 86400 * stayLoggedInDays
   )
}).send("Message: Login successful");

退出代码

router.post(
  "/logout",
  (req, res, next) => {
    res.clearCookie("jwt");
    next();
  },
  (req, res) => {
    console.log(req.cookies);
    res.end("finish");  
  }
);

注销后,我仍然可以看到用户个人资料,但是如果我从邮递员手动删除cookie,个人资料页面将不会显示任何信息,因此我的结论是express无法清除cookie。

1 个答案:

答案 0 :(得分:0)

我相信您的问题是您没有将options参数传递到clearCookie()中,并且客户端没有清除cookie,因为它不相同。根据{{​​3}}:

  

仅当给定的选项与res.cookie()相同时,Web浏览器和其他兼容客户端才会清除cookie,但expires和maxAge除外。

还找到了一个Express documentation,该状态说明了相同的内容,并显示了传递域和路径的示例:

res.clearCookie('my_cookie', {domain: COOKIE_DOMAIN, path: COOKIE_PATH});