Node.js 清除mongodb、expressjs、nodejs中的会话

Node.js 清除mongodb、expressjs、nodejs中的会话,node.js,mongodb,express,everyauth,Node.js,Mongodb,Express,Everyauth,我的配置: app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: 'MY SECRET',

我的配置:

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({
        secret: 'MY SECRET',
        store: new MongoStore({
            db: 'MY SESSION DB',
            host: 'localhost',
            port:88888
        })
    }));
    app.use(everyauth.middleware());
    app.use(express.methodOverride());

    app.use(app.router);
});

app.configure('dev', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    appPort = config.port; //Setting PORT to 8888 in dev mode.
    app.use('/public', express.static(__dirname + '/public'));
});

app.configure('production', function(){
    app.use(express.errorHandler());
    appPort = config.port;
    //Set cache-header-expires to 1 day
    var oneDay = 86400000;
    //app.use('/public', express.static(__dirname + '/public'));
    app.use('/public',express.static(__dirname + '/public', { maxAge: oneDay }));
});
现在,我有一个“注销”链接,指向我的应用程序上的/logout

好的,express会在注销时自动清理会话。但我的配置,我不认为它这样做。例如,附加到会话的自定义变量

req.session.custom
注销后仍然有效。但是,

req.session.auth
在注销后被清除

我的MongoDb存储中的会话对象数量只会随着时间的推移而增加。我也在使用everyauth


我遗漏了什么或做错了什么?

如果要在注销时为用户完全清除会话,可以从
everyauth.everymodule.handleLogout
函数调用
req.session.destroy()
。调用
req.logout()
时,只有
req.session.auth
被清除

为什么要在mongo store中创建一个新会话。有什么方法可以 当我被重定向到再次登录时阻止它loneranger 6月7日15分5点43分

如果会话不包含任何数据,则有一个选项可防止保存该会话

app.use(session({
    secret: 'secret123',
    store: new MongoStore({
        mongooseConnection: mongoose.connection,
        ttl: 60 * 30 // half hour
    }),
    saveUninitialized: false
}));

注销时如何删除Mongo会话存储中的对象?
req.session.destroy()
从您的存储中删除会话对象。我不认为req.session.destroy()正在清除它。在注销之前和注销之后,当我进行测试时,存储上的count()都是1。有什么线索吗?您的注销是否重定向到登录页面?这将创建一个新会话来替换您在注销时刚刚销毁的会话,并使其看起来没有任何更改。您是对的。它创造了一个新的。我检查会话id。感谢您指出这一点。