Javascript 如何在客户端解码JWT令牌负载?

Javascript 如何在客户端解码JWT令牌负载?,javascript,jwt,Javascript,Jwt,我正在使用jwt令牌进行身份验证,并希望在客户端读取有效负载信息。现在我正在做这样的事情: var payload = JSON.parse(window.atob(token.split('.')[1])); 是否有更好的方法在浏览器中使用jwt令牌 来自 下载.build/jwt-decode.min.js文件并包含在项目中 <script src="js/jwt-decode.min.js"></script> var token = 'e

我正在使用jwt令牌进行身份验证,并希望在客户端读取有效负载信息。现在我正在做这样的事情:

var payload = JSON.parse(window.atob(token.split('.')[1])); 
是否有更好的方法在浏览器中使用jwt令牌

来自

下载.build/jwt-decode.min.js文件并包含在项目中

<script src="js/jwt-decode.min.js"></script>

var token = 'eyJ0eXAiOo876jgJ96...'; // jwt token;
var decoded = jwt_decode(token);
console.log(decoded);

变量标记='eyJ0eXAiOo876jgJ96…';//jwt令牌;
var decoded=jwt_decode(令牌);
控制台日志(已解码);

此简单解决方案返回原始令牌、标头和有效负载:

function jwtDecode(t) {
  let token = {};
  token.raw = t;
  token.header = JSON.parse(window.atob(t.split('.')[0]));
  token.payload = JSON.parse(window.atob(t.split('.')[1]));
  return (token)
}

感谢@robertklep我之前查看了这些文件,但忽略了.build文件夹。我在你的链接后发布了我在下面使用的解决方案。你能解释一下为什么要这样做吗?我需要在前端阅读的有效负载中传递了信息。我当时需要在几个字段中显示一些基本的东西,如名字和电子邮件地址。@AdamReis如何只显示一次?只需先拆分字符串,例如
const[header,payload]=t.split('.')然后您可以转换并解析每个部分。必须分开两次是多余的。我之前的评论并不完全正确。你仍然需要验证令牌,否则你只是盲目地信任服务器。@sean你在说什么?这就是JWT的全部要点,客户端不必验证任何东西。解析JWT客户端的有用性更好。