node.js sessionStore显示所有会话的相同数据

时间:2011-03-28 23:25:06

标签: session mongodb node.js redis

我使用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\"}}" }

1 个答案:

答案 0 :(得分:2)

我猜你正在使用connect或express,所以:

您不直接与商店互动。您只需与req.session进行交互,connect将使用您配置的商店。

我建议你看看rmongo商店提供的示例(删除了redis示例)。

https://github.com/masylum/connect-mongodb/blob/master/examples/index.js

相关问题