我有node.js应用程序。我使用Json Web令牌进行身份验证。 JWT具有三个部分,分别是标题,有效负载和签名。这些部分之间有一个点,如下所示。
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中,我该怎么做?
答案 0 :(得分: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}`