exports.postLogin = (req, res) => {
let { email, pass } = req.body;
console.log(email);
User.findOne({ email }, (err, result) => {
console.log(email, pass, result.pass);
if (err) {
res.json({ status: 'failed', message: err });
} else if (!result) {
res.json({ status: 'failed', message: 'email or password are wrong' });
} else {
bcrypt.compare(pass, result.pass).then(async (isPassCorrect) => {
if (isPassCorrect) {
const token = await signToken(result.id);
res.json({
status: 'success',
message: 'you logged in !!',
token,
});
} else res.json({ status: 'failed', message: 'email or password are wrong!' });
});
}
});
};
您的头寸不太清楚您要做什么,所以我猜是黑了。
如果我没错,您正在寻找正确的位置,以便在保存密码之前对密码进行哈希处理,因此您可以在加密密码上使用bcrypt.compare()
,对吗?
[如果是,则可以在猫鼬实际保存文档之前,使用猫鼬pre
-hook来对密码进行哈希处理。为此,请将其添加到您的模型文件中
User.pre('save', async function (next) {
await bcrypt.genSalt(12).then(async salt => {
this.password = await bcrypt.hash(this.password, salt).catch(err => {
return next(err)
})
}).catch(err => {
return next(err)
})
})