2012-06-30 35 views
5
的NodeJS我

配置:清算會議,expressjs,

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,表示自動註銷註銷時的清除會話。但是用我的配置,我不認爲它這樣做。例如,附加到會話的自定義變量

req.session.custom 

註銷後仍然保留。但是,

req.session.auth 

在註銷後被清除。

我的MongoDb存儲中的會話對象數只隨着時間的推移而增加。我正在使用everyauth以及。

我在想什麼或做錯了什麼?

回答

13

如果您想在註銷時完全清除用戶的會話,您可以從everyauth.everymodule.handleLogout函數調用req.session.destroy()。當您致電req.logout()時,僅清除req.session.auth

+0

我該如何去掉Mongo會話存儲中的對象以及註銷? – Rajat

+1

'req.session.destroy()'從您的商店中刪除會話對象。 – JohnnyHK

+0

我不認爲req.session.destroy()正在清除它。在註銷之前和之後,當我測試時,商店的count()是1。任何線索? – Rajat