在 Auth0 中获取 user_metadata 个角色

Get user_metadata Roles in Auth0

我在登录 Auth0 后尝试获取用户角色,根据文档,我创建了一个规则

function (user, context, callback) {
    var namespace = 'https://myayth0.com/';
    context.idToken[namespace + 'app_metadata'] = user.app_metadata;
    context.idToken[namespace + 'user_metadata'] = user.user_metadata;
    context.idToken[namespace + 'roles'] = user.user_metadata.roles;
    context.accessToken[namespace + 'app_metadata'] = user.app_metadata;
    context.accessToken[namespace + 'user_metadata'] = user.user_metadata;
    context.accessToken[namespace + 'roles'] = user.user_metadata.roles;
    callback(null, user, context);
 }

现在我有了这个数据return

(...)
 email_verified
:
(...)
 https://ian:auth0:com/app_metadata
 :
(...)
https://ian:auth0:com/roles
:
https://ian:auth0:com/user_metadata
(...)
:
(...)
picture
:
(...)
sub
:
(...)
updated_at
:
(...)

现在访问图片或电子邮件很容易

     this.user.email, this.user.picture

但是角色呢?

   https://ian:auth0:com/roles
     : Array(1)
     0: "admin"
   ..................

请检查这个Auth0 Community Answer

一旦添加到您的令牌并返回到您的客户端应用程序,它应该只是验证和解码令牌以从命名空间的自定义声明键中检索值的情况。

您还应该检查将 ROLES 信息标记为 app_metadata 而不是 user_metadata(可由最终用户修改)是否有意义 - 以及它是否是 ID Token(消费者应用程序)或 Access Token(接收 API)应负责持有自定义索赔。

const roles = this.user['https://ian:auth0:com/roles']
              this.roles = roles[0]