当前位置: 首页 > 知识库问答 >
问题:

在无库节点中解码Jwt令牌

钱弘壮
2023-03-14

我有以下代码在Javascript中解码Jwt令牌(参考:如何在Javascript中解码Jwt令牌)

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';

function parseJwt(token) {
  var base64Url = token.split('.')[1];
  var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
  console.log(JSON.parse((atob(base64))))
};

parseJwt(token);

我从上面的代码中得到了我需要的有效负载,但我在节点中实现了它,那里我们没有“atob”函数来解码base64编码的字符串

似乎我们需要在节点中使用缓冲区。我做了研究,提出了下面的解决方案,但不起作用。

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
function parseJwt(token) {
  const base64Url = token.split('.')[1];
  const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
  const buff = new Buffer(base64, 'base64');
  const payloadinit = buff.toString('ascii');
  const payload = JSON.parse(payloadinit);
  console.log(payload)
};
parseJwt(token);

请让我知道是否有更好的方法-没有库(Jwt或decode-Jwt)

共有1个答案

孙朗
2023-03-14

实际上,我已经在独立的环境中尝试过了,上面的代码工作起来就像获得Jwt令牌支付负载的魅力一样

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'

const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const buff = new Buffer(base64, 'base64');
const payloadinit = buff.toString('ascii');
const payload = JSON.parse(payloadinit);
console.log(payload);
 类似资料:
  • 问题内容: 我目前正在使用Golang应用程序。我从客户端收到JWT令牌,在Go中,我需要对该令牌进行解码并获取以下信息:用户,名称等。我正在检查可用于处理JWT的库令牌,我来到https://github.com/dgrijalva/jwt- go ,但我看不到如何简单地制作所需的东西。 我有令牌,我需要将信息解码为地图或至少为json。在哪里可以找到如何做的指南?谢谢! 问题答案: 函数接受第

  • 我正在创建一个网络应用程序,我想实现Firebase身份验证,并帮助用户使用谷歌,脸书或推特登录。 用户在我的网站上使用Firebase登录,我在Javascript中收到登录信息。 根据Firebase留档,我没有传递JS中接收到的UID,而是将令牌ID发送到后端服务器,以便它可以验证源并检索用户ID。 我使用PHP-JWT来检查和验证Firebase返回的令牌。但是,标题中的< code>Ke

  • 我想解码我使用Postman收到的jwt令牌,并在RESTAPI中实现它。我该怎么做?我看到有人发布代码来解码jwt令牌(参考:如何在不使用库的情况下在javascript中解码jwt令牌?)但我不明白在《邮差》里怎么做?解码jwt需要什么url?需要什么标题、授权?

  • 在一个小项目上工作并使用jwt令牌进行了一些身份验证,整个过程如下所示: < li >在auth/register上生成jwt令牌以及刷新令牌 < li >使用令牌发出请求 < li >如果令牌过期,我将查询请求用户及其refreshToken,比较其当前请求refreshToken和数据库令牌 < li >如果令牌匹配,我将生成一个新令牌和一个新刷新令牌。 整个问题是第五步,假设我向“/me/f

  • 我使用jsonwebtoken解码我的令牌,看看它是否已过期。但是,控制台.log返回 null。 我不明白,因为我的令牌不为空

  • 我添加了Firebase,允许客户端直接从web应用程序客户端(浏览器)进行身份验证。我正在使用firebase web JS包,它工作得非常好。我可以在浏览器中看到,我收到一个用户对象,其中包含有关该用户的信息,包括。 然后,我需要在我的服务器后端(即python django)上对该用户进行身份验证。在Firebase文档中,我找到了一个我正试图做的操作指南,即验证id令牌。 因为他们没有支持