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: "密码错误" });
            }
        })
    })
});

`
求指点,都好几天了,一直卡在这里。

阅读 3.4k
2 个回答

node --inspect app.js开启调试模式,打开chrome浏览器,打下断点,先看入参userPassword, user.userPassword两者是否一致,如果不一致,在单步调试一步一步走进compare方法里面,看下是哪一步出错。

新手上路,请多包涵

你好,我最近也遇到这个问题了,请问你解决了吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题