【发布时间】:2016-05-30 02:28:39
【问题描述】:
passport.js 里面有几处我看不懂。
1.
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
null 在done() 函数中代表什么。它似乎总是第一个参数,我对它的实际作用感到困惑?
2.
passport.serializeUser(function(user, cb) {
cb(null, user);
});
passport.deserializeUser(function(obj, cb) {
cb(null, obj);
});
序列化和反序列化有什么作用?当会话存储在浏览器中时,是否会在登录后调用序列化?而反序列化是在访问页面时,在服务器上反序列化会话以验证该用户?
最后null参数又是什么cb(null, user);
【问题讨论】:
-
nodejs 中有一个约定,可以在回调的第一个参数中传递任何错误。你会在几乎每个节点库中看到这一点,包括像
fs这样的内置模块。所以传递null就像是在将结果提供给回调之前,函数内部没有发生错误。
标签: javascript node.js express passport.js