Ami*_*far 5 javascript cookies node.js express typescript
我正在为我的 express(带有打字稿)应用程序创建一个授权系统,我使用 JWT 并将它们保存到 cookie 中以保持用户登录。我的注销部分有问题, res.clearCookie() 不会删除 cookie。
我在索引文件中使用了 cookie-parser,并尝试使用空值或现在的到期日期重置 cookie,但它对我不起作用。正如我上面所说, res.clearCookie("jwt") 也不起作用。所有依赖项都是最新的。
登录和登录验证工作正常,我可以正确设置和读取 [和解码] JWT。
登录代码的主要部分
res.cookie("jwt", token, {
httpOnly: true,
expires: new Date(
Date.now() + 1000 * 86400 * stayLoggedInDays
)
}).send("Message: Login successful");
Run Code Online (Sandbox Code Playgroud)
登出代码
router.post(
"/logout",
(req, res, next) => {
res.clearCookie("jwt");
next();
},
(req, res) => {
console.log(req.cookies);
res.end("finish");
}
);
Run Code Online (Sandbox Code Playgroud)
注销后,我仍然可以看到用户个人资料,但是如果我从邮递员那里手动删除 cookie,个人资料页面将不会显示任何信息,所以我的结论是 express 无法清除 cookie。
我相信您的问题是您没有将options参数传入clearCookie()并且客户端没有清除 cookie,因为它不相同。根据Express 文档:
如果给定的选项与给定给 res.cookie() 的选项相同,Web 浏览器和其他兼容客户端只会清除 cookie,不包括 expires 和 maxAge。
还在express repo 上发现了一个GitHub 问题,其中说明了相同的内容并显示了传递域和路径的示例:
res.clearCookie('my_cookie', {domain: COOKIE_DOMAIN, path: COOKIE_PATH});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2669 次 |
| 最近记录: |