如何在Node.JS中将Json Web令牌拆分为Header-Payload-Signature

时间:2019-11-05 10:34:35

标签: javascript node.js rest authentication jwt

我有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中,我该怎么做?

1 个答案:

答案 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}`