bcrypt.compare с Promise всегда возвращает false - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в Express.js и Passport.js, поэтому, вероятно, я делаю что-то не так, поскольку функция bcrypt comapre всегда возвращает false.

public static findUser = async ({ email, password }) => {
  const pool = await new sql.ConnectionPool(CommonConstants.connectionString).connect();
  const request = pool.request();
  const result = await request
    .input("Email", sql.NVarChar, email)
    .execute("FindUserSP");
  const user = result.recordset;
  return await bcrypt.compare(password, user[0].Password) ? user : {};
};

Вот как был создан хеш:

const password = req.body.Password;
const email = req.body.Email;
const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash(password, salt);

Контрольный пример:

Hash: $2b$10$nK1.wW71NcBIQkMQq6wpHe/HMhCjOaQNy9BpfPDef01
password: 123
version: 3.0.2

1 Ответ

0 голосов
/ 03 декабря 2018

Убедитесь, что база данных не обрезает данные.Обычно хеш должен быть 60 символов, а не 50 из:

const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash(password, salt);

Проверено: https://repl.it/@CodyGeisler/bcrypt-test?language=nodejs

...