用户注册可以保存成功,但是,使用在登录中,密码匹配这里,总是返回 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: "密码错误" });
}
})
})
});
`
求指点,都好几天了,一直卡在这里。
node --inspect app.js开启调试模式,打开chrome浏览器,打下断点,先看入参userPassword, user.userPassword两者是否一致,如果不一致,在单步调试一步一步走进compare方法里面,看下是哪一步出错。