我正在使用护照设置一个简单的登录名 尝试将用户密码与保存的密码进行比较时发生错误
protected override void OnPause() {
base.OnPause();
if (IsFinishing) {
_logic?.detach();
_logic = null;
}
}
当我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 {
bcrypt.compare(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)
但是使用bcrypt,[ { _id: 5c5995448a88110c35673bb7,
firstname: 'test',
lastname: 'sample',
email: 'testsample@gmail.com',
password:
'$2b$10$bDVGjce/aDxr/NzXFw.qO.DA4tKjY6EwMARgl/NZfb0FNTaTxYwCW',
__v: 0 } ]
的结果为user.password
,同时尝试将保存的密码与表单的undefined
条目进行比较,但是,显然已经从查询结果中收到了密码在password
结果中。
答案 0 :(得分:0)
由于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 {
bcrypt.compare(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];
bcrypt.compare(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' })
}
}
})
}
}
})
}));