使用express和JWT令牌重置密码

使用express和JWT令牌重置密码,express,jwt,Express,Jwt,我正在尝试使用以下代码和邮递员重置用户密码。 但我意识到,在我生成令牌后,没有用户。控制台显示null // Reset User Password exports.resetPassword = function (req, res) { User.findOne({ reset_password_token: req.body.token, reset_password_expires: { $gt: Date.now() } }).exec(fu

我正在尝试使用以下代码和邮递员重置用户密码。 但我意识到,在我生成令牌后,没有用户。控制台显示
null

// Reset User Password
exports.resetPassword = function (req, res) {
  User.findOne({
    reset_password_token: req.body.token,
    reset_password_expires: {
      $gt: Date.now()
    }
  }).exec(function (err, user) {
    console.log('this user: ' + user)
    if (!err && user) {
      if (req.body.newPassword === req.body.verifyPassword) {
        user.hash_password = bcrypt.hashSync(req.body.newPassword, 10);
        user.reset_password_token = undefined;
        user.reset_password_expires = undefined;
        user.save(function (err) {
          if (err) {
            return res.status(422).send({
              message: err
            });
          } else {
            console.log(user.hash_password)
          }
        });
      } else {
        return res.status(422).send({
          message: 'Passwords do not match'
        });
      }
    } else {
      return res.status(400).send({
        message: 'Password reset token is invalid or has expired.'
      });
    }
  });
};
这就是我在《邮差》中使用它的方式

{           
            "newPassword": "cocacola",
            "verifyPassword": "cocacola",
            "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YjI3NjAyNDAwOWI1NDA5ZjMwNzAzZWYiLCJpYXQiOjE1MzA5NjA2NDEwOTN9.1LjroayiTWDNevShnH30n3LxUGCrazmTaJlHgOUNvJ0"
}

Postman中的响应是来自状态400的消息

您的意思是
console.log('this user:'+user)
null
?如果不在上面,那么您应该会得到运行时错误,比如“无法读取
未定义的
的属性
哈希密码
”,因为这可能是失败的
console.log(user.hash密码)
@SureshPrajapati you's right console.log('此用户:'+用户)为空您确定数据库中存在此特定记录吗?您能否附上上述令牌的查询结果?