2011-08-31 133 views
4

我正在使用express.session和connect-mongo作爲我的DataStore。如何在Node.js中管理會話

我面對的是......在我的服務器中,我有20個不同的app.get()調用。但並非所有人都需要檢查會話。

但是,如果我這樣做在我的服務器的開頭:

express.createServer(express.session({ ... })); 

然後每一個通話將觸發express.session,因此,會話設置爲MongoDB的。

如何限制只有我想觸發express.session?

e.g. app.get('/getASession') will get a session 
app.get('/donotGetSession') will not even trigger express.session 

回答

1

我找出解決方案。 express.session作爲函數返回。所以我可以這樣做:

global.mySession = express.session({ secret: session_secret, 
    store:new MongoStore({ 
     db: session_db_name, 
     host: session_db_ip, 
     port: session_db_port 
    }) 
}); 



app.get('/checkSession', mySession, function (req, res) { 
    res.send("<div>ok</div>"); 
}); 

所以,如果我不想soemthing使用會話,那麼我不把MySession的存在。 :)簡單。我喜歡節點。 :D

+0

這確實是express.js不是節點的一個特性,但我同意。我都喜歡。 – respectTheCode