清除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
被清除。