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

标签 javascript node.js rest authentication jwt

我有node.js应用程序。我使用 Json Web Token 进行身份验证。 JWT 由三部分组成,分别是 header 、有效负载和签名。这些部分之间有一个点,如下所示。

token = header.payload.signature  ||  token= xxxxx.yyyyyy.zzzzz

token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

我需要从创建的 header token 中获取有效负载值(中间部分)。我需要将 token 分为 3 部分( header -有效负载-签名)。

我使用这个方法:

const token= req.headers.authorization.split("")[1];
header,payload,signature = token.split('.')

但这行不通。还有其他分割方法或建议吗?

编辑:可以认为我有一个字符串(基本上是遵循命名约定的文件名)abc.def.ghi

我想提取第一个 之前的子字符串。 (即一个点)

在 javascript 中,我该如何做到这一点?

最佳答案

你走在正确的道路上。您可以像这样分割您的 token :

仅用于测试的基本 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}`

关于javascript - 如何在 Node.JS 中将 Json Web Token 拆分为 Header-Payload-Signature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709483/

相关文章:

javascript - 未显示 Chrome 选项卡时设置间隔 'stacks'

node.js - phantomjs中颜色模块的使用

java - 重定向到同一 Controller 中的 POST 方法

file - createReadStream 发送文件http

javascript - Express-mysql-session 防止 Passport 反序列化用户运行

java - 如何解决 rg.glassfish.jersey.server.model.ModelValidationException

web-services - 防止 token 共享的最佳方法是什么?

java - 为什么更改总和顺序会返回不同的结果?

javascript - 检查函数是否准备好

javascript - 如何在页面加载事件上获取服务器上的客户端计算机时间