在Auth0中获取user_metadata角色

时间:2017-12-06 10:01:03

标签: auth0

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

TextInput

现在我有这个数据返回

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);
 }

现在可以轻松访问图片或电子邮件

(...)
 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

2 个答案:

答案 0 :(得分:2)

请检查此Auth0 Community Answer

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

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

答案 1 :(得分:2)

知道了,

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

希望它有助于其他人