javascript - 错误: data and salt arguments required (am i missing something)?

标签 javascript mysql node.js bcrypt

app.post('/verify', function(req, res) {
// Create a password salt
var salt = bcrypt.genSaltSync(10);
    // Salt and hash password
var passwordToSave = bcrypt.hashSync(password_login, salt)

   var user_login = req.body.email;
   var password_login = req.body.password;


        connection.query('SELECT * FROM USER WHERE email = ?',
         [user_login],
          function(err, rows) {
            if (err) {
                        return done(err);
                    }
            if (bcrypt.hashSync(password_login, salt) === rows[0].password) {
                console.log('works');
        }

        });

    });

错误:需要数据和盐参数! 有人能帮我吗?这是怎么回事?

正如我所见,我无法理解 bcrypt 的逻辑。 在 MySql 上,密码字段经过哈希处理,但不适合,或者我可以说它没有与任何内容进行比较...也许我应该使用比较,bycrypt 是否使用其中的任何内容?

最佳答案

您不能执行bcrypt.hashSync(password_login, salt) == password,因为您使用的是随机盐,这意味着它与存储的密码不匹配。

您需要使用bcrypt.compareSync(password_login, hashedPassword) hashedPassword 来自您使用提交的电子邮件在数据库上运行的选择。 (例如hashedPassword= rows[0].password)

关于javascript - 错误: data and salt arguments required (am i missing something)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570585/

相关文章:

PHP - 将数据从 MYSQL 提取到 JSON 时,如何从 UTC 更改日期时间?

javascript - querySelector 'tbody > tr[data-index=-1]' 问题

javascript - JS中多个项目的运行函数

php - 避免在时间之间插入 sql

javascript - Promise.all 从 .then() 回调返回时无法正常工作

api - 使用node-trello模块发送post请求

python - 在nodejs pyshell中导入已安装的python包时出错

javascript - 如何在 JS( Node )中使用回调来等待异步函数完成后再继续?

javascript - 将 Request 2.0 应用程序生成的请求发送到 "/me"之外的其他位置

php mysql - 将相同数据的双行插入到 mysql 数据库中