2013-12-10 49 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

哦,我的坏。感谢您的信息。 –