有人可以告诉我在哪里可以写我的 bcrypt-hashing 函数吗?
Can someone please tell me where can i write my bcrypt-hashing function?
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()
,对吗?
如果是,您可以使用 mongooses pre
-hook 在 mongoose 实际保存文档之前散列密码。为此,请将其添加到您的模型文件中
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)
})
})
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()
,对吗?
如果是,您可以使用 mongooses pre
-hook 在 mongoose 实际保存文档之前散列密码。为此,请将其添加到您的模型文件中
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)
})
})