passport.js中有幾件事我不明白。Auth使用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);
});
什麼是序列化和反序列化呢?會話存儲在瀏覽器中時,serialize會在登錄後被調用嗎?並且反序列化是當頁面被訪問時,會話在服務器上被反序列化以驗證該用戶?
最後是什麼cb(null, user);
有一個在一個的NodeJS會議通過的任何錯誤沿回調的第一個參數。你會在幾乎每個節點庫中看到這個,包括像'fs'這樣的內置模塊。所以傳遞'null'就好像說在把結果提供給回調函數之前函數內部沒有發生錯誤。 – azium