如何将单个用户添加到角色

时间:2017-02-09 14:10:04

标签: asp.net authorization auth0

我们正在使用auth0来存储具有角色详细信息的用户。

我们希望通过API调用以编程方式更新auth0中的用户角色。我们正在关注以下文章,

User Profile Update

我们想使用以下网址

PATCH / api / users / b78a4564-ad7f-4af2-b7b2-79bbe1f703ef / roles

我们不了解我们需要传递哪些详细信息。 我们需要为此编写任何规则吗? 如果有任何代码段可用,那么它会很有帮助。

1 个答案:

答案 0 :(得分:0)

要更新用户个人资料上的规则,通常意味着更新他们的app_metadata,并为此使用update user APIv2端点。

例如,假设您具有以下用户配置文件(省略一些属性以节省空间):

{
    "email": "bob@gmail.com",
    "email_verified": true,
    "user_id": "auth0|58585012121212b3ac511f8",
    "app_metadata": {
          "roles": [
              "ROLE_ADMIN",
              "ROLE_USER"
          ]
      },
}

并且您希望更新角色信息,然后您可以使用API​​端点。

现在,您提到规则,是的,您可以说在规则中分配角色信息,该规则也会在身份验证后触发。非常简单的例子如下:

function (user, context, callback) {

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

  var addRolesToUser = function(user, cb) {
      cb(null, ['ROLE_ADMIN', '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);
        });
    }
  });
}

在上面,我只是为每个经过身份验证的用户分配相同的角色。但是,您可以仅对某些客户端(使用context.clientID)等进行API查找/白名单 - 具有很大的灵活性。