我正在使用react-native,node(10.4.0),passport(0.4.0)和bcryptjs(2.4.3)构建api登录
运行登录名时,它返回404错误。
module.exports = function (passport) {
passport.use(new LocalStrategy({usernameField: 'email' }, (email, password, done) => {
User.findOne({
email:email,
}).then(user => {
console.log(user)
if (!user) {
return done(null, false);
}
bcrypt.compare(password, user.password, (err, isMatch) => {
if (err) throw err;
console.log(err)
if (isMatch) {
console.log(isMatch)
console.log(password)
console.log(user.password)
return done(null, user)
} else {
return done(null, false)
}
})
})
}));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
}
如您所见,整个护照认证过程中我都有一些console.logs。
第一个console.log(user)返回正确的用户。我有多个正在使用的测试用户。
console.log(err)返回null
console.log(isMatch)-回调返回true
console.log(password)返回计划文本密码1234
console.log(user.password)返回1234的哈希和盐
$2a$10$RreQxxB.CKgyx3to4KgrgeWmQChJgaAjfPVxMeQmfUZf2Ol1wgJU2
console.log(password)是否应返回bcrypt.compare的输入密码的哈希和盐版本?
此外,404很奇怪,因为回调布尔值匹配true。
感谢您浏览此内容,我真的很感激。