我尝试使用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 :"*****************"
答案 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调试器中,以检查令牌。