javascript - 在 Node 中解码 Jwt token - 无需库

标签 javascript node.js express jwt

我有以下代码来解码 Javascript 中的 Jwt token (引用: How to decode jwt token in javascript )

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);

我从上面的代码中获取了我需要的有效负载 但我在 Node 中实现它,我们没有“atob”函数来解码base64编码的字符串

看来我们需要在 Node 中使用Buffer。我进行了研究并提出了以下不起作用的解决方案。

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 或解码 Jwt)

最佳答案

实际上我已经在独立环境中尝试过了,上面的代码就像魅力一样获取 Jwt token 有效负载

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);

https://repl.it/@Punith/RuralSeveralAdaware

关于javascript - 在 Node 中解码 Jwt token - 无需库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863051/

相关文章:

javascript - 为什么我无法获取输入类型=文本的内容?

javascript - 我可以取消 promise 的执行吗?尝试检查数千个链接并且不想等待请求超时

node.js - 根据实际的 node_modules 检查包 json 中的版本

error-handling - 错误处理ExpressJS和MongoDB

Node.js、Expressjs、Mongo、Jade : `new` action passing initialized mongo instance resulting in 'ReferenceError: jade is not defined'

javascript - 通过 JQuery 下载 .EXE 文件

javascript - 在 React 中调用外部 JS

javascript - jstree获取更新后的数据

javascript - XMLHttpRequest 无法加载 https ://www. facebook.com/dialog/oauth?response_type=code&redirect_uri=

node.js - "Topology was destroyed"使用带有 native 驱动程序和 Express.js 的 MongoDB 时