bearer = bearerHeader.replace("Bearer","");
jwt.verify(bearer, 'super_secret', function (err, decoded) {
    console.log(err);
    console.log(decoded);
});

这是我的代码。每当我尝试验证 token 时。我想替换 header 中的Bearer以仅验证 token 。如果是持票人,它将始终变为“错误”。当我从标题删除承载时,我会完美地工作。任何人请帮助我解决这个问题。有什么办法可以解决这个问题?

输出:
  {
     [JsonWebTokenError: invalid token] name: 'JsonWebTokenError',
     message: 'invalid token'
  }

   undefined

最佳答案

如果bearerHeader类似于“Bearer 456513”,则您的代码

bearerHeader.replace("Bearer","");

结果将为:“456513”( token 前有空格)
bearerHeader.replace('Bearer ','');

可能可以解决您的问题,但我建议先验证身份验证方案(“Bearer”一词实际上是“Bearer”):
 var parts = bearerHeader.split(' ');
 if (parts.length === 2) {
   var scheme = parts[0];
   var credentials = parts[1];

   if (/^Bearer$/i.test(scheme)) {
     token = credentials;
     //verify token
     jwt.verify(token, 'super secret', function(err, decoded) {
     }
   }
}

09-25 16:12