@Nikita1244
Юный программист

Почему выдает false, но на самом деле пароли одинаковые?

Всем привет. Столкнулся с такой проблемой. Я делаю логин, где сравниваются пароли(из БД и введенный пользователем). Но у меня выдает false, я уже проверял, пароль точно такой же. У меня все данные печатаются в консоли при регистрации
и логине для дебага. Ну так вот, пароли точно одинаковые.

Хеширую пароль с помощью Bcrypt. Соль присутствует в хеше.

Код для хеширования при регистрации

bcrypt.hash(password, saltRounds, async function (err, hash) {
        // Store hash in database here
        console.log(hash); // debug
        let post = {
            name: `${name}`,
            email: `${email}`,
            password: `${hash}`
        } // Структура данных для сервера
        let sql = "INSERT INTO users SET ?" // Writing data to the DB
        try {
            let query = await dbConnection.query(sql, post);
            return res.json({
                "status": "ok",
                "location": "/home"
            });
        } catch (err) {
            console.log(err)
            return res.json({
                "status": "error",
                "error": "Произошла ошибка сервера. Попробуйте позже"
            });
        }
    });


Фрагмент кода из логина

const [users] = await dbConnection.query(
        "SELECT `password` FROM `users` WHERE `email`=?", [email]
    )
const hash = String(users)
    const match = await bcrypt.compare(password, hash);
    console.log(match)
    if (match) {
        return res.json({
            "status": "ok",
            "location": "/home"
        })
    } else {
        return res.json({
            "status": "error",
            "error": "Неверный пароль"
        })
    }

  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
rqdkmndh
@rqdkmndh
Web-разработчик
const hash = users[0]['password']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Grapeoff
@Grapeoff
В чём концепция...?
Была такая проблема, когда генерировал соль функцией genSalt. Помогло напрямую передать количество rounds.

bcrypt.hash(password, 10, ...)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы