嗨,所以我正在尝试使用 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);
添加回答
举报
0/150
提交
取消