2012-06-30 26 views
5

moją konfigurację:Usuwanie sesje MongoDB, expressjs, nodejs

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

Teraz mam link 'wyloguj', który jedzie do/wylogowanie z mojej aplikacji.

AFAIK, express automatycznie zajmuje się sesjami rozliczeniowymi po wylogowaniu. Ale z moją konfiguracją, nie sądzę, żeby to robił. Na przykład, zmienna zwyczaj dołączony do sesji

req.session.custom 

nadal przechowuje po wylogowaniu. Jednak po wylogowaniu jest wyczyszczone.

Liczba obiektów sesji w moim magazynie MongoDb rośnie z upływem czasu. Używam również everyauth.

Czego mi brakuje lub robię źle?

Odpowiedz

13

Aby całkowicie usunąć sesję użytkownika po wylogowaniu, można zadzwonić pod numer req.session.destroy() z funkcji everyauth.everymodule.handleLogout. Tylko req.session.auth jest usuwany po wywołaniu req.logout().

+0

Jak mogę usunąć obiekt w moim magazynie sesji Mongo, a także podczas wylogowywania? – Rajat

+1

'req.session.destroy()' usuwa obiekt sesji ze sklepu. – JohnnyHK

+0

Nie sądzę, że req.session.destroy() wyczyści to. Zarówno przed, jak i po wylogowaniu, count() w sklepie to 1, kiedy testuję. Jakaś wskazówka? – Rajat

Powiązane problemy