node.js - 如何销毁 session ?

标签 node.js reactjs express express-session

我希望能够在用户注销后销毁 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");
  });
});

我不知道这是否有帮助,但这是 session : enter image description here

附注我正在使用 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/

相关文章:

javascript - 使用 .includes() 时 Switch 语句不起作用

javascript - Sweet Alert没有显示动态值,我做错了什么?

javascript - 自动滚动到消息底部

javascript - react-redux:元素类型无效

node.js - 控制台在node/express中输出req.params

javascript - 使用 Express 的 Nuxt 应用程序不允许在应用程序外部访问 POST 路由

node.js - 使来自 mysql 的 Node js-Express Rest api 安全/身份验证的方法

Node.js 和 Express Web API 无法在 Azure 上运行

node.js - 如何在 node.js 中清除超时

javascript - React App 是否允许在 App.js 文件中获取数据?