2
我在做什麼錯?它總是重定向到失敗頁面,但我無法調試。PassportJS not authenticate
// passport
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
User = require('./models/user.js').Model;
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
console.log('entrou');
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);
});
}
));
// login
app.get('/login', user.login);
app.post('/login',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/login'
})
);
findOne是如何實現的? – user568109
另外,在登錄後('console.log'),'err'和'user'是否包含期望值?您是否實施了'passport.serializeUser'和'passport.deserializeUser',以及Passport的所有其他要求? – robertklep
我有類似的問題,調試顯示(!user.validPassword)在內部方法將其設置爲true之前返回false。 (幾乎就像它是在一個異步方法中執行,但它是同步的權利?) - 編輯:我想出來了,bcrypt在我的auth函數內觸發一個異步方法 - 所以在它有機會評估來自bcrypt的響應。 –