gpt4 book ai didi

node.js - express.session 在服务器端在哪里存储哈希 session key ?

转载 作者:可可西里 更新时间:2023-11-01 10:32:21 24 4
gpt4 key购买 nike

我正在使用 mongoStore 来管理 express.js 框架上的 session 。

...
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上 session 集合中的记录

> 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。他们在哪里存储这个值?如果我的理解有误,请指正。谢谢!

最佳答案

如果您阅读 source code connect-mongo,Mongo文档的对象id是session id:

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

session middleware :

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

但是,您不仅会在屏幕截图中看到 cookie ID,因为 this relevant answer 将散列附加到 cookie 值(请参阅 cookie-signature module ) ,因此您看到的是 sid.hash cookie 值。

这是 relevant source code ,存储散列值的位置:

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

您还可以阅读 unit tests以获得更透彻的理解。

关于node.js - express.session 在服务器端在哪里存储哈希 session key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com