Connect-mongo 会话不会自动删除

2024-02-24

我有一个使用 NodeJS、Express、MongoDB 和 connect-mongo 的应用程序。

我的问题是,会话过期时似乎不会自动从 MongoDB 中删除,因此数据库大小会不断增长,直到磁盘已满。

connect-mongo 的开发者写了一条评论 https://github.com/kcbanner/connect-mongo/issues/27#issuecomment-5133845:

connect-mongo 将要求 MongoDB 删除所有已连接的会话 在当前日期之前过期。

但这似乎并没有发生在我的案例中。

我的配置是:

var express = require('express');
var MongoStore = require('connect-mongo');

var sessionStore = new MongoStore({db: 'myappsession'});

var app = express.createServer();

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({ secret: "myappsecret", store:sessionStore }));
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

我目前正在运行以下版本:

  • node:0.7.0-之前
  • 连接蒙戈: 0.1.7
  • express: 2.5.2
  • connect: 1.8.5

你还没有设置clear_interval https://github.com/kcbanner/connect-mongo#options对于您的会话.. connect-mongo 默认值为 -1 (或“从不”):

clear_interval清除过期会话的时间间隔(以秒为单位)(可选,默认:-1)。值

每小时(3600 秒)删除过期会话的示例:

var sessionStore = new MongoStore({
     db: 'myappsession',
     clear_interval: 3600
});

您还应该确保您已经设置了maxAge在您的会话实际过期时(例如使用 1 天):

app.use(express.session({
    secret: "myappsecret",
    cookie: { maxAge: 24 * 60 * 60 * 1000 },
    store:sessionStore
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Connect-mongo 会话不会自动删除 的相关文章

随机推荐