我已经阅读了很多有关快速护照模块如何工作的文章。
我了解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;