我正在使用Node.js服务器,我正在使用Connect框架进行开发。我试图在给定间隔后重新生成SID以避免会话固定。有一种名为 req.session.regenerate 的方法,根据文档,它应该做到这一点。
«简单地重新生成会话 一旦完成,就调用该方法 新的SID和Session实例将是 在req.session初始化»
示例代码:
req.session.regenerate(function(err){
// will have a new session here
});
调用上面的方法后,我检查req.sessionID的值,发现该值与之前相同。
如果我尝试从req.session.regenerate中获取sessionID并将其写入终端,我会得到一个新的SID,这更令人费解~IE为什么你想要只在回调范围内生成SID ?如果我将值赋给全局变量,则它的值是未定义的。
我有一种感觉,我忽视了一些非常明显的事情。
感谢任何帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
只需在重新生成函数的回调中发回响应。由于会话重新生成为异步,因此当您返回到客户端时,它仍将具有较旧的会话。
req.session.regenerate(function(err) {
req.session.myid = "myvalue";
res.simpleJSON(200, status);
});