jsonwebtoken , v8.5.0
节点 v10.13.0
npm 6.4.1
如果我多次创建令牌:
jwt.sign({ user_email: user_email, user_id: user_id, username: username }, 'RESTFULAPIs')
Run Code Online (Sandbox Code Playgroud)
问题 01:
字符串的前两部分似乎总是相同的(base64 编码header和payload值),但第三部分(signature)不同。
为什么signature原始值相同时不同?
我试过的:
我已阅读jwt.io/introduction 中的signature部分:
要创建签名部分,您必须:
- 编码的标头
- 编码的有效载荷
- 一个秘密
- 标头中指定的算法
并签字。
所以,作为一个猜测:
使用算法 andsignature对 base64 编码header和payload值进行加密的结果是不是在这种情况下是 string ,每次加密都会产生不同的结果,而解码结果总是相同的? HS256secretRESTFULAPIs
问题 02:
除了名为 的对象属性外,不同标记的解码值始终相同iat。那个属性代表什么?
jwt.sign({ user_email: user_email, user_id: user_id, username: username }, 'RESTFULAPIs')
Run Code Online (Sandbox Code Playgroud)
实际上,在对第二个问题进行了更多研究之后,我发现了这一点:
“iat”(发布于)声明标识了 JWT 的发布时间。此声明可用于确定 JWT 的年龄。它的值必须是一个包含 NumericDate 值的数字。
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |