Connect-mongo会话不被自动删除 [英] Connect-mongo sessions not being deleted automatically

查看:142
本文介绍了Connect-mongo会话不被自动删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我的问题是,当MongoDB中的会话似乎没有被自动删除时过期,所以数据库大小增长直到磁盘已满。



connect-mongo的开发人员发表评论


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'));
});

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




  • 节点: 0.7.0-pre

  • connect-mongo: 0.1.7

  • express: 2.5.2

  • 连接:

解决方案

您尚未设置 clear_interval 为您的会话。connect-mongo默认值为-1(或从不):


clear_interval 清除过期会话的时间间隔(可选,默认值: -1 < STRONG>)。


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

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

您还应确保设置了一个 maxAge 你的会话实际到期(例如使用1天):

  app.use(express.session({
秘密:myappsecret,
cookie:{maxAge:24 * 60 * 60 * 1000},
store:sessionStore
}));


I have an application using NodeJS, Express, MongoDB and connect-mongo.

My issue is that sessions don’t seem to be automatically deleted from MongoDB when they expire, so the db size grows until the disk is full.

The developer of connect-mongo wrote a comment:

connect-mongo will ask MongoDB to remove all the sessions that have expired before the current date.

But this doesn’t seem to be happening in my case.

My configuration is:

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'));
});

And I’m currently running the following versions:

  • node: 0.7.0-pre
  • connect-mongo: 0.1.7
  • express: 2.5.2
  • connect: 1.8.5

解决方案

You haven't set a clear_interval for your sessions .. the connect-mongo default is -1 (or "never"):

clear_interval Interval in seconds to clear expired sessions (optional, default: -1). Values <= 0 disable expired session clearing.

Example of removing expired sessions every hour (3600s):

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

You should also make sure you have set a maxAge on your sessions to they actually expire (eg using 1 day):

app.use(express.session({
    secret: "myappsecret",
    cookie: { maxAge: 24 * 60 * 60 * 1000 },
    store:sessionStore
}));

这篇关于Connect-mongo会话不被自动删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆