bcrypt 与 nodejs 比较

Posted

技术标签:

【中文标题】bcrypt 与 nodejs 比较【英文标题】:bcrypt compare with nodejs 【发布时间】:2021-11-11 17:28:43 【问题描述】:

所以我收到了这个错误 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 的问题

【问题讨论】:

你应该先通过用户名获取用户。然后您应该将您的密码与用户密码进行比较。 bcyrpt.compare(req.body.password, user.password, function(err, data) => // 你的回调 ) 你能告诉我们你想在这里做什么,以便为你写出更好的答案吗? 您需要将 2 件事传递给 bcrypt.compare -- 否则您将如何说出您要比较的 2 件事? @douscriptist 你不必指定回调函数——在这种情况下你会得到一个 Promise 回复你一个await 就像@evan_tech1234 正在做的那样。 【参考方案1】:

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

从数据库中检索散列密码并将其与实际密码进行比较

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

    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')
      
    )
  
)

【讨论】:

以上是关于bcrypt 与 nodejs 比较的主要内容,如果未能解决你的问题,请参考以下文章

nodejs - 如何比较bcrypt的两个哈希密码

Nodejs bcrypt比较无法正常工作

使用bcrypt在nodejs中进行密码加密

如何将密码文本与 bcrypt 哈希值进行比较?

Bcrypt Elastic beanstalk nodejs 部署

无论密码如何,Bcrypt-NodeJS compare() 都会返回 false