javascript - Bcrypt.compareSync 总是返回 false

标签 javascript mysql express sequelize.js express-session

嗨,我正在尝试使用 sequelize 创建我的第一次登录,但我正在努力进行散列和比较散列,但它总是返回 false。
我认为自从我学习以来,我在哈希或比较上做错了。我正在使用 SQL 数据库
这是我的登录代码,我正在使用快速 session 和 Sequelize :

     'processLogin': (req, res) => { 
            db.User.findOne({
            where: { 
              email: req.body.email
            }
          })
          .then(async user => {
            var eSession = req.session.userLogin
            let checkPass = await bcrypt.compare(req.body.password, user.password)
            console.log(checkPass);
            if(checkPass){
              eSession = user;
              res.send("Success");
            }else{
              res.render('login', {errors: [{
                msg: "Incorrect password"
              }]});
            }
             if(user == undefined){
              res.render('login', {errors: [{
                msg: "User not found, please Register"
              }]});}
          })
        }
这是我在我的寄存器上实际散列密码的地方:
      'save': async (req, res) => {
        var a = [req.body.fullname, req.body.email, req.body.number, bcrypt.hashSync(req.body.password, 10), bcrypt.hashSync(req.body.repassword, 10)];
        let errors = validationResult(req);
        if(errors.isEmpty()){
        db.User.create({
          full_name: a[0],
          email: a[1],
          phone_number: a[2],
          password: await bcrypt.hash(a[3], 10),
          confirm_password: await bcrypt.hash(a[4], 10)
        })
        .then(users => {
          res.send("succes!!");
        }) 
        }else{
          res.render('register', { errors: errors.errors })
        }
      }
    }

最佳答案

插入同步为什么不尝试异步并等待它得到散列或解密。
在异步函数中散列密码。

let hashedPassword = await hash(password, 10);
以及用于比较密码的异步函数内部
    let checkPass = await compare(password, foundUser.password);

关于javascript - Bcrypt.compareSync 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615273/

相关文章:

node.js - 在 AngularJS、NodeJS、MongoDB、Mongoose 和 ExpressJS 中使用单个表单发布到多个集合

express - 如何在express中将参数传递给回调函数?

javascript - 如何刷新浏览器字段

mysql - SQL 在表中查找日期范围差距

php - 将数据库中的所有数据输出到 php 页面

javascript - 从表单字段提交数组到数据库

javascript - 以下公共(public)目录设置有什么问题?

javascript - javascript中如何执行同步性

javascript - 隐藏在屏幕后面的意见箱

javascript - Laravel - Ajax 调用没有响应