首页 > 解决方案 > @auth0/angular-jwt : 从解码的令牌中获取声明

问题描述

?我通过“@auth0/angular-jwt”进入我的 Angular 10 应用程序 JWT 令牌。在解码函数后,我得到一个声明列表,如下所示:

{
  http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: "johndoe", 
  http://schemas.microsoft.com/ws/2008/06/identity/claims/role: "Manager", 
  exp: 1525510870, 
  iss: "http://localhost:5000", 
  aud: "http://localhost:5000"
}

我如何通过打字稿获得自定义声明,例如:

{
  name: "johndoe", 
  role: "Manager", 
}

? 谢谢。

标签: angulardecodeauth0jwt-authclaims

解决方案


如果 JWT 由 3 个部分组成,则必须从中间解码一个,即包含声明的主体,第一个是标头,最后一个是 JWT 签名。

因此,有了一个令牌,我们想要获取它的声明,所以我们从中间解码部分并将其解析为 json,这样我们就可以将声明作为该对象的字段来访问。

let token = localStorage.getItem('token');
let decodedJWT = JSON.parse(window.atob(token.split('.')[1]));

console.log('name: ' + decodedJWT.name);
console.log('role: ' + decodedJWT.role);

推荐阅读