如何在 Node.JS 中将 Json Web Token 拆分为 Header-Payload-Signature
Posted
技术标签:
【中文标题】如何在 Node.JS 中将 Json Web Token 拆分为 Header-Payload-Signature【英文标题】:How to split Json Web Token as Header-Payload-Signature in Node.JS 【发布时间】:2020-03-01 17:12:51 【问题描述】:我有 node.js 应用程序。我使用 Json Web Token 进行授权。 JWT 包含三个部分,分别是 header、payload 和 signature。这些部分之间有一个点,如下图所示。
token = header.payload.signature || token= xxxxx.yyyyyy.zzzzz
token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
我需要从创建的标头令牌中获取有效负载值(中间部分)。我需要将令牌拆分为 3 部分(Header-Payload-Signature)。
我用这个方法:
const token= req.headers.authorization.split("")[1];
header,payload,signature = token.split('.')
但这不起作用。有没有其他的拆分方法或建议给我?
编辑:可以认为我有一个字符串(基本上是遵循命名约定的文件名)abc.def.ghi
我想在第一个 . (即一个点)
在 javascript 中,我该怎么做?
【问题讨论】:
【参考方案1】:你走在正确的道路上。您可以像这样拆分您的令牌:
用于测试的基本 html:
<div id="app">
<p id="head"></p>
<p id="pay"></p>
<p id="sign"></p>
</div>
实际的javascript代码:
var token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
var [header, payload, signature] = token.split(".")
document.getElementById("head").innerHTML= `header: $header`
document.getElementById("pay").innerHTML =`payload: $payload`
document.getElementById("sign").innerHTML= `signature: $signature`
【讨论】:
谢谢!我只是忘了放 [] 括号以上是关于如何在 Node.JS 中将 Json Web Token 拆分为 Header-Payload-Signature的主要内容,如果未能解决你的问题,请参考以下文章
如何在node.js中将mysql查询的结果输出为json文件
如何使用 express 在用户浏览器的响应标头 cookie 中查找 JSON Web 令牌 (JWT) 来制作 node.js?