在MySQL中不是有效的BCrypt哈希

时间:2018-12-31 07:04:04

标签: node.js bcrypt

在比较数据库中的密码和正文中提供的密码时,我遇到了问题。 请帮忙。

app.post('/login', (req, res) => {
                    var newUserMysql = {
                       username: req.body.username,
                       password: req.body.password
                   };

                   db.query("SELECT * FROM dataa WHERE username = ?",[newUserMysql.username], function(err, rows) {
                         if (err)
                             return done(err);

                         if (rows.length) {
                             res.send("already a user")

                             console.log(bcrypt.compareSync(rows[0].password, newUserMysql.password));

                             if(bcrypt.compareSync(rows[0].password, newUserMysql.username)){
                               res.send("successfully logined")
                             }else{
                               res.send("password doesnt matched")
                             }

                          }
         });

})

1 个答案:

答案 0 :(得分:0)

您的compare方法参数顺序错误:第一个参数应为纯文本密码,第二个参数为哈希值。您的if语句还将密码哈希与用户名进行比较。日志行有此正确。我假设您在db的密码字段中正确具有哈希值。

这些更改之后的正确版本为:

CardView

请检查https://www.npmjs.com/package/bcrypt上的语法。