连接会话中间件 - 重新生成和重新加载

时间:2011-05-17 16:25:36

标签: node.js connect express

我试图了解Connect的Session中间件,我想知道它们之间的区别:Session.regenerate()vs Session.reload()。

具体来说,我检查了文档,并没有解释会话重新加载实际上做了什么。同样,我也对Session.save()方法感到困惑。任何帮助非常感谢!

1 个答案:

答案 0 :(得分:7)

比较两个函数的源代码:

<强> store.js

Store.prototype.regenerate = function(req, fn){
  var self = this;
  this.destroy(req.sessionID, function(err){
    self.generate(req);
    fn(err);
  });
};

<强> session.js

defineMethod(Session.prototype, 'reload', function reload(fn) {
  var req = this.req
    , store = this.req.sessionStore;
  store.get(this.id, function(err, sess){
    if (err) return fn(err);
    if (!sess) return fn(new Error('failed to load session'));
    store.createSession(req, sess);
    fn();
  });
  return this;
});

我把它读成“如果它存在或创建一个会话”vs“销毁前一个并给我一个新的”。