我希望能够在用户注销后销毁 session 。目前它没有按预期工作。 session 不会被破坏。
我能够从注销路由打印console.log()。
这是我到目前为止使用的代码:
前端
const handleLogout = async (e) => {
e.preventDefault();
try {
await fetch("http://localhost:4000/logout", {
method: "GET",
});
} catch (error) {
console.error(error.message);
}
};
后端
app.get("/logout", (req, res) => {
req.session.destroy((err) => {
if (err) {
return console.log(err);
}
res.send("logged out");
console.log("logged out");
});
});
附注我正在使用 React、Node、Express 和 Express-Session。
提前致谢!
最佳答案
req.session.destory()
从服务器端 session 存储中删除 session ID,这将使客户端注销,因为 session ID 已从服务器端 session 存储中删除,并且无法再在未来的请求中匹配客户端 cookie。但是,它不会从浏览器中删除现在孤立的 session cookie。
为此,在执行 res.send("logged out");
之前,您需要一个 res.clearCookie(cookieName)
,其中目标名称为无论您的 session cookie 是什么。这将发送正确的 header 和响应,告诉浏览器清除该 cookie。
关于node.js - 如何销毁 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70101660/