Задать вопрос
@Nikita1244
Anonymous

Почему выдает 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": "Неверный пароль"
        })
    }

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

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

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

Похожие вопросы