【问题标题】:auth0: update user roles using v2 apiauth0:使用 v2 api 更新用户角色
【发布时间】:2017-03-22 15:59:15
【问题描述】:

我可以使用https://xxx.au.auth0.com/api/v2/ 来查询和更新用户。但是不知道如何创建角色并将它们分配给用户。

有什么想法吗?

【问题讨论】:

  • 希望你找到了你要找的东西。在下面给出了一个答案,应该可以满足您的需要。如果您仍有任何问题,请在答案下方留下我的 cmets,我会尽力提供帮助。

标签: auth0


【解决方案1】:

一个简单的方法是在Auth0 中使用Rules - 您可以将角色信息添加到用户配置文件的app_metadata 属性中。

例如,这里是一个简单的例子

function addRolesToUser(user, context, callback) {   

  // ignore this rule if not correct client id of application using Rules 
  if (context.clientID !== 'eTQbNn3qxxxxxxxxxxxL6R7M7MDh') {
    return callback(null, user, context);
  }

  user.app_metadata = user.app_metadata || {};
  user.user_metadata = user.user_metadata || {};

  // You can add a Role based on what you want
  // In this case I check domain - give gmail ADMIN role
  var addRolesToUser = function (user, cb) {
    if (user.email.indexOf('@gmail.com') > -1) {
      cb(null, ['ROLE_ADMIN', 'ROLE_USER']);
    } else {
      cb(null, ['ROLE_USER']);
    }
  };

  addRolesToUser(user, function (err, roles) {
    if (err) {
      callback(err);
    } else {
      user.app_metadata.roles = roles;
      auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
        .then(function () {
          callback(null, user, context);
        })
        .catch(function (err) {
          callback(err);
        });
    }
  });
}

角色现在是 User Profile 的一部分,可在 app_metadata 中进行检查。如果您还希望角色信息出现在返回的 JWT ID 令牌中,只需将 roles 范围添加到您的身份验证请求中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 2014-07-22
    • 2018-11-04
    • 2016-02-11
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多