javascript 使用Nodejs Connect重新生成会话ID

lyfkaqu1  于 2023-05-27  发布在  Java
关注(0)|答案(2)|浏览(192)

我正在使用Node.js服务器,并且正在使用Connect框架进行开发。我尝试在给定间隔后重新生成SID,以避免会话固定。有一个名为req.session.regenerate的方法,根据文档,它应该可以完成这个任务。
«要重新生成会话,只需调用该方法,一旦完成,新的SID和会话示例将在请求时初始化。

示例代码:

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

调用上述方法后,我检查req.sessionID的值,结果发现该值与之前相同。
如果我试图从req.session.regenerate中获取sessionID并将其写入终端,我会得到一个新的SID,这甚至更令人困惑~例如,为什么你只希望在回调范围内生成SID?如果我把值赋给一个全局变量,它的值是未定义的。
我觉得我忽略了一些很明显的事情。
任何帮助都很感激。

6ie5vjzr

6ie5vjzr1#

只需将响应发送回regenerate函数的回调中。由于会话重新生成是异步的,因此当您返回到客户端时,它仍然具有较旧的会话。

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

pokxtpni2#

您的问题很可能与此问题有关:
https://github.com/senchalabs/connect/pull/263
在任何情况下,您描述的行为与问题中报告的行为完全相同。

相关问题