有几个问题我不明白在passport.js中。
1.
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);
});
serialize和deserialize是什么?当会话存储在浏览器中时,登录后是否会调用serialize?当访问页面时,反序列化会话以验证用户,这时会调用deserialize吗?
最后,在cb(null, user);
中,null
参数是什么意思?
fs
这样的内置模块。因此,传递null
就像是在将结果传递给回调之前表示函数内部没有发生错误。 - azium