【问题标题】:How to configure connect-mongo如何配置connect-mongo
【发布时间】:2016-06-01 06:27:49
【问题描述】:

我正在使用“connect-mongo”节点模块将会话数据存储在 mongodb 中。

下面是我配置connect-mongo相关的代码

const cookieParser = require('cookie-parser');
app.use(cookieParser());
const session = require('express-session');
const mongoStore = require('connect-mongo')(session);

app.use(session({
secret: "test",
store: new mongoStore({
  url: mongodbURL,
  collection : 'sessions',
  autoRemove: 'interval',
  autoRemoveInterval: 1 // In minutes. Default
}
}));

一旦用户从浏览器连接到根“/” url,就会插入一条记录 在数据库中

 {
"_id": "EZ2sy6jHvnrlsyofqCrKVfPtp6hv5FX_",
"session": "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"mongosession\"}",
"expires": ISODate("2016-06-14T15:19:15.548Z")
 }

我的问题是

  1. 为什么 originalMaxAge ,“会话”的过期键为 null 并且 需要修改什么以使这些键具有值。?

  2. 由于我已将 autoRemoveInterval 设置为 1 min ,因此我假设该会话 数据库中的值将在 1 分钟内删除,但事实并非如此 需要修改什么来实现这一点?

【问题讨论】:

    标签: node.js connect-mongo


    【解决方案1】:
    1. 配置connect-sessioncookie 属性。默认情况下,maxAgenull,使 cookie 成为(浏览器)会话 cookie。
    2. 设置connect-mongottl 属性,默认为14 天(根据expires 属性中的时间戳判断,这看起来差不多)。 autoRemoveInterval 仅配置 connect-mongo 应多久检查一次是否有任何会话应过期。

    【讨论】:

    • 感谢您的回答。现在我添加了 ttl: 60 key/value ,并且因为 autoRemoveInterval 是 1 ,我期待如果给定会话空闲超过 1 分钟,那么数据库中的会话记录将被删除,但记录不会被删除.
    • @CleanCrispCode 这些文档的expires 属性显示什么?
    • { "_id": "1234", "session": "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"secure\ ":false,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"mongosession\"}", "expires": ISODate("2016-06- 01T08:25:20.981Z") }
    • 不确定,看起来过期时间戳是有效的,我不知道为什么connect-mongo 没有从数据库中删除它。
    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多