谁能告诉我在哪里可以编写bcrypt哈希函数?

问题描述 投票:0回答:1
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!' });
      });
    }
  });
};
express mongoose bcrypt
1个回答
0
投票

您的头寸不太清楚您要做什么,所以我猜是黑了。

如果我没错,您正在寻找正确的位置,以便在保存密码之前对密码进行哈希处理,因此您可以在加密密码上使用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)
    })
})
© www.soinside.com 2019 - 2024. All rights reserved.