Я не знаю, почему bcrypt.compare с хешированным паролем не совпадает - PullRequest
0 голосов
/ 08 апреля 2020

Я действительно не знаю об этой проблеме с функцией bcrypt.compare, когда кто-то присоединяется к моему веб-сайту, создает пароль с помощью ha sh

const hash = await bcrypt.hash(u_password, 12);
const user = await User.create({
  u_email,
  u_password: hash,
  u_name,
  u_birth,
  u_nation,
  u_phnbr,
  u_sex,
});

и при входе в систему я просто сравниваю с использованием bcrypt.compare

  module.exports = (passport) => {
  passport.use(new LocalStrategy({
    usernameField: 'u_email',
    passwordField: 'u_password',
  }, async (u_email, u_password, done) => {
    try {
      const exUser = await User.findOne({ where: { u_email } });
      if (exUser) {
        const result = await bcrypt.compare(u_password, exUser.u_password);

        console.log(u_password);
        console.log(exUser.u_password);

        if (result) {
          done(null, exUser);
        } else {
          done(null, false, { message: 'incorrect password.' });
        }
      } else {
        done(null, false, { message: 'non-exist user'});
      } 
    } catch (error) {
      console.log(error);
      done(error);
    }
  }));
};

когда я выполняю код ошибки, просто возвращаю неправильный пароль, почему bcrypt.compare возвращает false? Пожалуйста, помогите мне

1 Ответ

1 голос
/ 08 апреля 2020

Я нашел решение. поскольку в столбце паролей базы данных размер слишком мал для хеширования, я расширяю столбец паролей в базе данных, он работает

...