【问题标题】:Extract 'Roles' from a JWT in Javascript从 Javascript 中的 JWT 中提取“角色”
【发布时间】:2018-12-16 17:27:07
【问题描述】:

我创建了一个令牌并将其发送到我的客户端应用程序 (ReactJS)。

{
  UserId: "1",
  http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: "Unset",
  http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Array(2), 
  exp: 1531116565,
  iss: "http://www.example.com", 
…}

角色项如下所示:

[ {0: "User"}, {1, "Admin"} ]

我不确定为什么我的角色项被命名为 URL。但我要做的是确定 JWT 是否指示用户具有管理员角色。

如何检查角色数组中的“管理员”?

【问题讨论】:

  • 是数组对象或字符串中的项目,并且某些东西正在奇怪地呈现输出?第二项中的键和逗号而不是冒号之类的索引使其难以确定。

标签: javascript reactjs jwt


【解决方案1】:

可能是这样的:

const token = localStorage.getItem("x-access-token");

const role = JSON.parse(window.atob(token.split(".")[1])).role;

【讨论】:

    【解决方案2】:

    你可以试试这个

    const roles = [
      {0: "User"}, {1: "Admin"}
    ];
    let isAdmin = false;
    roles.map( role => {
      let r = Object.values( role )
      if ( r[0] == 'Admin' ) {
        isAdmin = true
      }
    })
    
    console.log( isAdmin );
    

    【讨论】:

    猜你喜欢
    • 2017-10-18
    • 2021-05-22
    • 2019-08-08
    • 2021-06-01
    • 2021-04-07
    • 2020-09-06
    • 2020-11-22
    • 2021-04-10
    • 2020-01-03
    相关资源
    最近更新 更多