如何使用 JavaScript 解码 JWT 的有效负载?没有图书馆。所以令牌只返回一个负载对象,我的前端应用程序可以使用它。
示例令牌: xxxxxxxxx.XXXXXXXX.xxxxxxxx
结果是有效载荷:
{exp: 10012016 name: john doe, scope:['admin']}
如何使用 JavaScript 解码 JWT 的有效负载?没有图书馆。所以令牌只返回一个负载对象,我的前端应用程序可以使用它。
示例令牌: xxxxxxxxx.XXXXXXXX.xxxxxxxx
结果是有效载荷:
{exp: 10012016 name: john doe, scope:['admin']}
工作 unicode 文本 JWT 解析器功能:
function parseJwt (token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
};
带有 try-catch 的简单功能
const parseJwt = (token) => {
try {
return JSON.parse(atob(token.split('.')[1]));
} catch (e) {
return null;
}
};
谢谢!
您可以使用jwt-decode,然后您可以编写:
import jwt_decode from 'jwt-decode';
var token = 'eyJ0eXAiO.../// jwt token';
var decoded = jwt_decode(token);
console.log(decoded);
/*{exp: 10012016 name: john doe, scope:['admin']}*/
您可以使用纯 javascriptatob()
函数将令牌解码为字符串:
atob(token.split('.')[1]);
或者直接解析成json对象:
JSON.parse(atob(token.split('.')[1]));
阅读atob()
和btoa()
内置javascript 函数Base64 编码和解码- Web APIs | MDN。
function parseJwt(token) {
var base64Payload = token.split('.')[1];
var payload = Buffer.from(base64Payload, 'base64');
return JSON.parse(payload.toString());
}
let payload= parseJwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
console.log("payload:- ", payload);
如果使用节点,您可能必须使用缓冲包:
npm install buffer
var Buffer = require('buffer/').Buffer