首页 > 解决方案 > bcrypt 与 nodejs 比较

问题描述

所以我收到这个错误 Error: Illegal arguments: string, undefined ,这是代码

    router.post('/loguser', async (req, res) => {
        const compareHashed = await bcrypt.compare(req.body.password)
        const user = await User.findOne({
            username: req.body.username,
            password: compareHashed
        })
        if (user) {
            console.log('user is found')
        }
        if (!user) {
            console.log('user is not found')
        }
    })

有谁知道如何解决这个问题,我知道这是 bcrypt 的问题

标签: node.jsbackendbcryptmern

解决方案


嗨,兄弟,首先我们对密码进行哈希处理并存储在数据库中

从 db 中检索该散列密码并将其与实际密码进行比较

例如:如果我们尝试使用电子邮件和密码登录

    User.find({email:req.body.email}).exec().then(result=>{

  if(result.length < 1){
    console.log('email not found')
  }else{
    bcrypt.compare(req.body.password,result[0].password,(err,result)=>{
      if(err){
        console.log('password not match')
      }
      if(result){
        console.log('password match')
      }
    })
  }
})

推荐阅读