使用Nodejs Connect重新生成会话ID

我正在使用一个Node.js服务器,我正在开发与Connect框架。 我试图在给定的时间间隔之后重新生成SID,以避免会话固定。 有一种方法称为req.session.regenerate ,根据文档,应该做到这一点。

“重新生成会话只需调用该方法,一旦完成一个新的SID和会话实例将被初始化在req.session»

示例代码:

req.session.regenerate(function(err){ // will have a new session here }); 

在调用上面的方法之后,我检查了req.sessionID的值,只是发现值和以前一样。

如果我尝试从req.session.regenerate中获取sessionID并将其写入terminal,我会得到一个新的SID,这更加令人困惑〜IE为什么要只在callback的范围内生成SID? 如果我把值赋给一个全局variables,它的值是未定义的。

我有一种感觉,那就是我忽视的东西。

任何帮助表示赞赏。

很可能你的问题与这个问题有关:

https://github.com/senchalabs/connect/pull/263

无论如何,您所描述的行为与问题中所报告的完全相同。

只需在回生函数中发送回应即可。 由于会话重新生成是asynchronous的,当你返回到客户端时,它仍然会有旧的会话。

 req.session.regenerate(function(err) { req.session.myid = "myvalue"; res.simpleJSON(200, status); });