如何调用nodejs的passport.serialize?

时间:2019-01-26 17:31:12

标签: passport.js

我已经阅读了很多有关快速护照模块如何工作的文章。

我了解passport.serialize的工作方式,但不了解如何调用passport.serialize

用户成功登录后,将调用passport.serialize函数并序列化用户信息,将其存储到会话中。

我猜这是回调例程。 (登录事件-调用序列化)

所以我查看了护照库代码,

但未能解释其工作方式。

当我们创建回调模式时,

我们通常编写类似.click(callback function)

的代码

但是在这种情况下,我们只写passport.serialize

如何序列化被调用?

关于该问题的所有关于堆栈溢出的文章均不存在,因此任何建议将不胜感激

// passport/sessionmanager.js

function SessionManager(options, serializeUser) {
  if (typeof options == 'function') {
    serializeUser = options;
    options = undefined;
  }
  options = options || {};

  this._key = options.key || 'passport';
  this._serializeUser = serializeUser;
}

SessionManager.prototype.logIn = function(req, user, cb) {
  var self = this;
  this._serializeUser(user, req, function(err, obj) {
    if (err) {
      return cb(err);
    }
    if (!req._passport.session) {
      req._passport.session = {};
    }
    req._passport.session.user = obj;
    if (!req.session) {
      req.session = {};
    }
    req.session[self._key] = req._passport.session;
    cb();
  });
}

SessionManager.prototype.logOut = function(req, cb) {
  if (req._passport && req._passport.session) {
    delete req._passport.session.user;
  }
  cb && cb();
}


module.exports = SessionManager;

0 个答案:

没有答案