2013-12-10 51 views
1

我正在使用mongoStore來管理express.js框架中的會話。express.session store在服務器端散列會話密鑰在哪裏?

... 
var MongoStore = require('connect-mongo')(express); 
... 
... 
app.use(express.session({ 
    secret:settings.cookieSecret, 
    store: new MongoStore({db:settings.db}) 
})); 
... 

this is the connect.sid and its value

,但這裏是MongoDB的會話中收集的記錄

> db.session 
s.find() 
{ "_id" : "gLQe0NwaSmk9nPu6vOWKuSy0", "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"flash\":{},\"user\":null}", "expires" : ISODate("2013-12-24T05:02:33.308Z") } 
{ "_id" : "SoqYLZnEzlVCdj4A1606fDPg", "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"flash\":{},\"user\":\"vvv\"}", "expires" : ISODate("2013-12-24T09:43:55.098Z") } 
{ "_id" : "pBtoFt6sR2EvNCuPJVqAFVpR", "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"flash\":{}}", "expires" : ISODate("2013-12-24T09:24:27.846Z") } 
{ "_id" : "MEkFGzd190YeJAGDH3nzLT14", "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"flash\":{}}", "expires" : ISODate("2013-12-24T09:44:10.585Z") } 
> 

我的理解是,他們應該connect.id都對客戶端的cookie和存儲值某處服務器分貝記憶。由於我使用connect-mongo,因此connect.id應該存儲在db.sessions中。

但我找不到服務器端的connect.id。他們在哪裏存儲這個值?如果我的理解錯誤,請糾正它。謝謝!

回答

1

如果你讀的connect-mongosource code,蒙戈的文檔的對象ID是會話ID:

var s = {_id: sid, session: this._serialize_session(session)}; 

session middleware

// get the sessionID from the cookie 
req.sessionID = unsignedCookie; 

但是,你不只是看到該Cookie ID因爲哈希會附加到Cookie值(請參閱this relevant answercookie-signature module,因此您看到的是sid.hash Cookie值。

這裏是relevant source code,其中哈希值存儲:

// set-cookie 
    val = 's:' + signature.sign(val, secret); 
    val = cookie.serialize(key, val); 

您也可以閱讀unit tests一個更透徹的瞭解。

+0

感謝您爲我找到// set-Cookie代碼! –

1

express.js的會話cookie功能實際上是由connect

你設置用於從數據庫中的會話ID登錄到你看到

值檢查source code

密鑰提供
+0

請注意,您鏈接的來源已被棄用:'console.warn('不使用utils.sign(),使用https://github.com/visionmedia/node-cookie-signature')' –

+0

哦,我的壞。感謝您的信息。 –