angular - @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",
}
? 谢谢。
解决方案
如果 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);
推荐阅读
- django - 我需要 m2m .csv 导出中两个模型的多个字段
- python - 如何调试 CDK python 应用程序并获得可用的上下文变量?
- python - 使用 Python 3.8 将用户输入以十六进制格式写入二进制文件
- agda - List Set 应该是一种排序,但它不是
- r - R中一个数据集的向量大小分配错误,但对于相同大小的不同数据集却没有
- ios - 通过链接从 iOS Swift 打开 Instagram 亮点
- android - 反应原生 || 当 sdkVersion 为 30 时,InAppBrowser 不可用
- java - 在android上的物理键盘中读取类型输入状态
- http - 如何通过 HTTP 处理延迟响应,例如通过轮询?
- python - 在理解函数中使用新键扩展字典