我使用node.js并希望在KeyValue商店中存储会话。我为此尝试了Redis和MongoDB。在这两种情况下,我都使用变量req.sessionStore,如下例所示:
app.get('/user', parseParams, function(req,res) {
data = req.sessionStore.userData || {};
sendStringified(req,res,data);
});
但是无论我在哪个浏览器中打开我的webapp,如果我去网站,它都会访问我从其他地方登录的最后一个帐户的数据。因此,只有一个用户可以同时登录。它似乎在所有会话上共享req.sessionData对象。我错过了什么吗?
如果我在mongo客户端中转到我的会话数据库,并执行db.sesions.find(),它会显示以下格式的条目:
{ "_id" : "CKMF8DfBpYNSCNyPIDj9ozVM.ZVo4d0/Oxrxdql44E6QL+U1AgtHWbGXLyX826YO1bDo",
"session" : "{\"lastAccess\":1301358495277,
\"cookie\":{\"originalMaxAge\":14400000,\"expires\":\"2011-03-29T04:28:16.004Z\",\"httpOnly\":true,\"path\":\"/\"},
\"oauth\":{\"token\":\"the_token\",\"token_secret\":\"the_secret\",\"verifier\":\"the _verifier\",\"access_token\":\"a_token\",\"access_token_secret\":\"a_t_s\"}}" }
答案 0 :(得分:2)
我猜你正在使用connect或express,所以:
您不直接与商店互动。您只需与req.session
进行交互,connect将使用您配置的商店。
我建议你看看rmongo商店提供的示例(删除了redis示例)。
https://github.com/masylum/connect-mongodb/blob/master/examples/index.js