如何使用JWT令牌获取用户ID

时间:2019-06-25 12:20:41

标签: node.js jwt access-token express-jwt

我尝试使用jwt令牌获取用户ID。我获取了jwt令牌并成功对其进行了验证。但它没有返回ID,它返回了{iat:1561463667}

Jwt代码

 const decoded = jwt.verify(token, config.get('jwtPrivateKey'));  
            var userId = decoded.id  
            console.log(decoded)  

我得到了输出

{ iat: 1561463667 }

例外的输出

id :"*****************"

1 个答案:

答案 0 :(得分:1)

当整个输出为{ iat: 1561463667 }时,这意味着在对令牌进行签名时不会添加任何额外的有效负载/声明。 j sonwebtoken package通常将iat (issuedAt)添加为默认声明。那是令牌发行的时间。

简单地说:您只能解码之前添加的声明。

要添加更多声明,请尝试以下代码(当您控制发出令牌的代码时):

let payload = { "id" : "1"};
let token = jwt.sign( payload,'secret',  { noTimestamp:true, expiresIn: '1h' });

在这里我添加了expiry time (exp),并设置了选项noTimestamp以禁止自动添加的iat声明。

结果如下:

{
 "id": "1",
 "exp": 1561471747
}

和令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJleHAiOjE1NjE0NzI0MzV9.jmKyITRoxLl0fy0-rrwgPOA_iRgGQu8W4Cc6dPupOMA

您也可以将此令牌或令牌粘贴到https://jwt.io调试器中,以检查令牌。