gpt4 book ai didi

node.js - 为什么 mongodb session MongoStore 在 session 结束后不消失?

转载 作者:可可西里 更新时间:2023-11-01 09:12:34 26 4
gpt4 key购买 nike

即使有

app.use(express.session({
secret: conf.secret,
maxAge : new Date(Date.now() + 360000),
expires: new Date(Date.now() + 360000),//I've tried both separately
store : new MongoStore(conf.db),


}));

mongodb 中的 session 永远保持(据我测试)

即使在 session 结束后,MongoDB 中的 session 存储是否应该只保留在那里?
因为即使在 session 声明中使用 maxAge 或 expires,在 MongoDB 中,所有 session 看起来都是这样的:

{ "_id" : "FU8k3kEzquG/hoSD308H5XHa", "session" : "{\"cookie
\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,
\"path\":\"/\"}}" }

此外,在我的大部分 _id 中都有某种类型的非数字/字母字符,即/、+ 等。它们应该是那样的吗?

每次我重新打开浏览器时,都会创建一个新 session ,但旧 session 仍存在于 MongoDB 中。我只想知道是否有解决办法,或者这是否是故意的。

谢谢,布兰登

最佳答案

Are the session stores in MongoDB supposed to just stay there even after the session ends?

如果您的浏览器的 cookie 过期但 session 信息已保存在持久性后端数据存储(如 MongoDB)中,这是预期的行为。这两个数据存储(后端与基于浏览器的 cookie)可以有不同的到期时间。

假设您使用的是 connect-mongodb要保留 session ,默认的 reapInterval 应该每 60 秒触发一次删除过期 session 。

由于您的 session 过期时间设置为“空”,因此这些 session 永远不会过期。 session 到期应该与 cookie expires 值相同..所以如果它没有被设置你可能需要做一些调试来追踪问题。

这些可能是您尝试设置 maxAge 之前保存的旧 session ;我会检查新 session 是否像您期望的那样设置 expires。如果是这样,您可能需要手动删除一些较旧的未到期 session 。

Also, in most of my _id's there is some type of non-number/letter character, i.e. /, +, etc. Are they supposed to be like that?

是的,Express sessionID 是 24 个字符长的字母数字字符串。

关于node.js - 为什么 mongodb session MongoStore 在 session 结束后不消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com