使用Nodejs连接重新生成会话ID
问题描述:
我正在使用Node.js服务器,并且正在使用Connect框架进行开发。我试图在给定的时间间隔后重新生成SID以避免会话固定。有一种方法称为req.session.regenerate根据文档,应该这样做。使用Nodejs连接重新生成会话ID
«为了再生会话简单地 调用该方法,一旦完成一个新 SID和Session实例将在req.session被 初始化»
示例代码:
req.session.regenerate(function(err){
// will have a new session here
});
在调用上述方法之后,我检查了req.sessionID的值,结果发现值与befor即
如果我尝试从req.session.regenerate中获取sessionID并将其写入终端,我会得到一个新的SID,这更加令人困惑〜IE为什么要只在范围内生成SID?回电话?如果我将该值赋给全局变量,它的值是未定义的。
我有一种感觉,那就是我忽视的东西。
任何帮助表示赞赏。
答
只需在回生函数中发送回应即可。由于会话重新生成是异步的,当你返回到客户端时,它仍然会有旧的会话。
req.session.regenerate(function(err) {
req.session.myid = "myvalue";
res.simpleJSON(200, status);
});
你在哪里/何时检查'req.sessionID'?也许你正在检查的代码实际上是在重新生成函数运行之前检查的。 – 2011-03-10 22:13:30
我一直在几个地方检查。之前,从内部和之后再生以比较这些值。我使用console.log将req.session.id的值发送到终端。它们之间没有任何区别。 – 2011-03-11 03:21:46
你解决了吗?我有另一个稍微不同的问题:http://stackoverflow.com/questions/5646905/why-do-i-have-to-create-a-local-reference-to-a-request-session-object-in -nodejs – Lewis 2011-04-13 10:24:58