jsonwebtoken decode返回null

时间:2017-08-27 14:42:02

标签: node.js jwt

使用jsonwebtoken https://www.npmjs.com/package/jsonwebtoken

var jwt = require('jsonwebtoken');
var token = httpResponse.headers["x-authorization-bearer"].trim();

var decoded = jwt.decode(token);
console.log(token); // eyJ0eXAiOiJKV1QiLCJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.WTMwOGJudHBDTVM3Rm52clBPOGFPUQ.UbXYtb5KppbGYn3AkyOkCg.ljnC5I8q3qThn-NHY6qBqkFhSS9hNiR_pviIFB1zNVmp5Z2wOx0MON2sWRsDF__uSJ-PdI7QaM6djdflbTvKyPWbtKV6g_VDOU-lF6XKMI96BMK41mmBiJSNyDNxE5hqB4X_qWeCYMif8tf583bcKvkrxyuUTsRwvR2Xdo6yl9dyapYGhvKar2TtogOR9-jlFADfPL07ih0YjPYTo2gAWGzrVR6tNuyoRJolYd0ixon5nZ1aP5TdcbPrNcWmGfmuIfWN12BdiEtfrVYDNV7xwmNWfuxke0Uev5VAlIATg_U.1X6R6y9IK3n8NAexswUQKQ
console.log(decoded); // null

2 个答案:

答案 0 :(得分:1)

您提供的JWT有4个.个字符,但根据jwt.io

  

JSON Web令牌由三个部分组成,用点(。)分隔,它们是:

     

标题
  有效载荷
  签名

     

因此,JWT通常如下所示。

     

xxxxx.yyyyy.zzzzz

decode中的jsonwebtoken功能首先呼叫decode中的jws功能,该功能针对以下RegEx进行验证:

/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/

鉴于您的令牌包含4个.个字符,此验证将失败并返回null,这会传播到您的呼叫网站。

答案 1 :(得分:0)

如果您尝试实例化JSON Web令牌,则不会获得唯一的令牌值。实际上,您可能会以{}空注入结束。

我们可以按以下方式使用jsonwebtoken。 例如。 常量令牌= jwt.sign(有效载荷,SECRET_KEY,{algorithm,expireIn})