Недопустимый хэш BCrypt в MySQL - PullRequest
0 голосов
/ 31 декабря 2018

Я столкнулся с проблемой при сравнении паролей из базы данных и предоставленного пароля из тела.Пожалуйста, помогите.

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 голосов
/ 31 декабря 2018

У вас есть параметры метода сравнения в неправильном порядке: первый параметр должен быть паролем в виде простого текста, а второй параметр - значением хеш-функции.Также ваш оператор if сравнивает хэш пароля с именем пользователя.Строка журнала имеет это правильно.Я предполагаю, что у вас правильно хэш в поле пароля в БД.

Правильная версия после этих изменений будет:

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

if(bcrypt.compareSync(newUserMysql.password, rows[0].password)){
...

Пожалуйста, проверьте синтаксис на https://www.npmjs.com/package/bcrypt.

...