简体   繁体   English

在节点中解码 Jwt 令牌 - 没有库

[英]Decode Jwt Token in Node - without Library

I have a following code to decode the Jwt token in Javascript (ref: How to decode jwt token in javascript )我有以下代码来解码 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);

I am getting the payload which I needed from above code But I am implementing it in node where we dont have "atob" function to decode the base64 encoded string我从上面的代码中获得了我需要的有效载荷但是我在节点中实现它,我们没有“atob”函数来解码 base64 编码的字符串

Seems we need to use Buffer in node.看来我们需要在 node.js 中使用 Buffer 。 Did my research and came up with below solution which didn't work.做了我的研究并提出了以下不起作用的解决方案。

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

Please let me know if there is any better approach - No libraries(Jwt, or decode-Jwt)请让我知道是否有更好的方法 - 没有库(Jwt 或 decode-Jwt)

Actually I have tried it in independent environment and above code works like charm for getting Jwt token pay load实际上我已经在独立环境中尝试过,上面的代码就像获得 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);

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

const DecodeJWT= (token) => {
  try {
    return JSON.parse(atob(token.split('.')[1]));
  } catch (e) {
    return null;
  }
};

simple & easy way简单易行的方法

您可以检查一下以获得atob功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM