2011-08-31 131 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