Bcrypt密码比较结果中未定义的NodeJS错误
我设置了护照尝试与保存的密码比较用户密码出现错误,简单的登录
module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
let query = { email: username };
User.find(query, function (err, user) {
if (err) {
console.log(err);
}
else {
if (!user) {
console.log(3)
return done(null, false, { message: 'No user found' })
} else {
bcryptpare(password, user.password, function (err, isMatch) {
if (err) {
console.log(err);
} else {
console.log(user.password)
if (isMatch) {
console.log(5)
return done(null, user);
} else {
console.log(6)
return done(null, false, { message: 'Wrong Password' })
}
}
})
}
}
})
}));
当我console.log(user)
:
[ { _id: 5c5995448a88110c35673bb7,
firstname: 'test',
lastname: 'sample',
email: '[email protected]',
password:
'$2b$10$bDVGjce/aDxr/NzXFw.qO.DA4tKjY6EwMARgl/NZfb0FNTaTxYwCW',
__v: 0 } ]
但使用bcrypt,user.password
结果undefined
尝试与形式的password
进入比较保存的密码,但是,看似密码已从查询结果,在console.log(user)
结果显而易见的好评。
由于MongoDB是返回“用户”与您可以单个项目的阵列:
module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
let query = { email: username };
User.find(query, function (err, user) {
if (err) {
console.log(err);
}
else {
if (!user) {
console.log(3)
return done(null, false, { message: 'No user found' })
} else {
bcryptpare(password, user[0].password, function (err, isMatch) {
if (err) {
console.log(err);
} else {
console.log(user[0].password)
if (isMatch) {
console.log(5)
return done(null, user);
} else {
console.log(6)
return done(null, false, { message: 'Wrong Password' })
}
}
})
}
}
})
}));
或者你可以
module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
let query = { email: username };
User.find(query, function (err, user) {
if (err) {
console.log(err);
}
else {
if (!user) {
console.log(3)
return done(null, false, { message: 'No user found' })
} else {
let userdata = user[0];
bcryptpare(password, userdata.password, function (err, isMatch) {
if (err) {
console.log(err);
} else {
console.log(userdata.password)
if (isMatch) {
console.log(5)
return done(null, user);
} else {
console.log(6)
return done(null, false, { message: 'Wrong Password' })
}
}
})
}
}
})
}));