2011-03-28 46 views
0

我使用node.js並希望將會話存儲在KeyValue存儲中。我爲此嘗試了Redis和MongoDB。在這兩種情況下,我使用變量req.sessionStore對於這一點,因爲在這個例子中:node.js sessionStore顯示所有會話的相同數據

app.get('/user', parseParams, function(req,res) { 
    data = req.sessionStore.userData || {}; 
    sendStringified(req,res,data); 
}); 

但無論在哪個瀏覽器中打開我的web應用程序,如果我去的網站,它訪問的最後的數據帳戶我從其他地方登錄。因此,只有一個用戶可以同時登錄。它似乎在所有會話中共享req.sessionData對象。我錯過了什麼嗎?

如果我去我的會話分貝蒙戈客戶端,並做了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\"}}" } 

回答

2

我猜您正在使用連接或快遞,因此:

您不直接與商店進行互動。您只需與req.session進行互動,連接將使用您配置的商店。

我建議你看看rmongo商店提供的示例(redis示例已被刪除)。

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

+0

非常感謝您的回答!當會話存儲保留req.session時,如何與會話cookie進行交互? – Thomas 2011-03-29 11:36:23

+2

使用'req.session.cookie' :)您可以獲得關於connect文檔的更多信息:http://senchalabs.github.com/connect/middleware-session.html – masylum 2011-03-29 11:45:27