为了账号安全,请及时绑定邮箱和手机立即绑定

Bcrypt.compareSync 总是返回 false

Bcrypt.compareSync 总是返回 false

紫衣仙女 2022-10-21 09:36:51
嗨,所以我正在尝试使用 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 })        }      }    }
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

安装同步为什么不尝试异步并等待它得到散列或解密。

在异步函数内部散列密码。

let hashedPassword = await hash(password, 10);

和内部用于比较密码的异步函数

    let checkPass = await compare(password, foundUser.password);


查看完整回答
反对 回复 2022-10-21
  • 1 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信