微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我在bcrypt比较时出错?异步/等待功能

如何解决为什么我在bcrypt比较时出错?异步/等待功能

我正在尝试使用nodeJs和MysqL登录用户

这是我连接用户功能

export async function connectUser(email,password,cb) {

  console.log('Entry connectuser');
  let db = dbConnect();

  await db.query('SELECT id,email,password FROM user WHERE email = ?',[email],async (error,result) => {
    if (error) return cb(error);

    const user = result[0];
    
    console.log(result);
    console.log(user.email);
    console.log(user.password);
    console.log(user.id);
    
    const isValid = await bcrypt.compare(password,user.password);
    if (isValid === true) {
      const token = jwt.sign({id: user.id,email: user.email },secret,{expiresIn: 86400 });
      return cb(null,token);
    }
    
    return cb(new Error('Invalid Credentials'));
    
});

我在bcrypt.compare()上收到以下错误:“ UnhandledPromiseRejectionWarning:错误:非法参数:object,string”

我想这是async / await的错误,但是我无法解决...一些想法?

解决方法

doc中所述,您应像这样使用bcrypt.compare:

    bcrypt.compare(req.body.password,user.password,function(err,res) {
  if (err){
    // handle error
  }
  if (res)
    // Send JWT
  } else {
    // response is OutgoingMessage object that server response http request
    return response.json({success: false,message: 'passwords do not match'});
  }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。