bcrypt 密码匹配总是返回 false
用户注册可以保存成功,但是,使用在登录中,密码匹配这里,总是返回 false ,不知道该怎么解决了,求指点:
//login
`
router.post('/login', (req, res) => {
const userEmail = req.body.userEmail;
const userPassword = req.body.userPassword;
UserModel.findOne({ userEmail }).then(user => {
// console.log(user.userPassword == userPassword);
if (!user) {
return res.status(404).json({ userEmail: '用户不存在!' });
};
// bcrypt 验证密码
// userPassword 是当前传回来的值
// user.userPasswor 是数据库中的值
// 经过测试,它们是一样的
bcrypt.compare(userPassword, user.userPassword).then(isMatch => {
console.log(isMatch);
//每次到这里一步时 isMatch 总是返回 false
if (isMatch) {
//登录成功,返回 token,token 的使用规则为:jwt.sign("规则","加密名称","过期时间","箭头函数")
const rule = {
id: user._id,
name: user.userName
};
jwt.sign(rule, Key.secretName, { expiresIn: 3600 }, (err, token) => {
if (err) throw err;
res.json({
sucess: true,
token: "Bearer " + token
});
})
} else {
return res.status(400).json({ userPassword: "密码错误" });
}
})
})
});
`
求指点,都好几天了,一直卡在这里。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
node --inspect app.js开启调试模式,打开chrome浏览器,打下断点,先看入参userPassword, user.userPassword两者是否一致,如果不一致,在单步调试一步一步走进compare方法里面,看下是哪一步出错。
你好,我最近也遇到这个问题了,请问你解决了吗?