Jsonwebtoken验证始终只返回{iat:xxx}

egi*_*gig 2 node.js express-jwt json-web-token

根据文档,https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback,jwt.verify将返回解码有效负载,我运行简单的脚本:

var token = jwt.sign({email: req.body.email,}, 's3cr3t');
var decoded = jwt.verify(token, 's3cr3t');
console.log(decoded)
Run Code Online (Sandbox Code Playgroud)

但它只输出如下: { iat: 1470725598 }

我希望输出应该是这样的 {email: myemail@domain.com,}

有什么我想念的吗?

Sam*_*Toh 5

我没能到我设置的属性来模仿你的问题req.body.emailundefined.

例:

var jwt = require('jsonwebtoken');
var token = jwt.sign({email: undefined}, 's3cr3t');
var decoded = jwt.verify(token, 's3cr3t'); 
Run Code Online (Sandbox Code Playgroud)

由于未定义,输出将如下所示;

{iat:1470727340}

这符合你的具有使我怀疑你的主要问题是只与物业到底是什么req.body.emailundefined.

假设req.body.email正确设置为"myemail@domain.com",那么输出将是;

{email:'myemail@domain.com',iat:1470727500}

这里只是旁注.您可能需要考虑将该.verify方法包装在try-catch子句中,如文档中所示.这对于在令牌无效时验证和抛出错误非常有用.