清除mongodb,expressjs,nodejs中的会话

我的configuration:

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

现在,我有一个“注销”链接去/注销我的应用程序。

AFAIK,自动注销注销清理会话。 但是用我的configuration,我不认为它这样做。 例如,附加到会话的自定义variables

 req.session.custom 

注销后仍然保留。 然而,

 req.session.auth 

注销后清除。

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

我错过什么或做错了什么?

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