Bcrypt.compareSync 总是返回 false

嗨,所以我正在尝试使用 sequelize 创建我的第一个登录名,并且我正在努力处理散列和比较散列,它总是返回 false。由于我正在学习,我认为我在哈希或比较上做错了。我正在使用 SQL 数据库


这是我的登录代码,我正在使用快速会话和续集:


     '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 })

        }

      }

    }


紫衣仙女
浏览 286回答 1
1回答

aluckdog

安装同步为什么不尝试异步并等待它得到散列或解密。在异步函数内部散列密码。let hashedPassword = await hash(password, 10);和内部用于比较密码的异步函数    let checkPass = await compare(password, foundUser.password);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript