要更新用户配置文件中的规则,通常意味着更新其app_metadata - 并且您使用update user APIv2端点。
例如,假设您有以下用户配置文件(去掉了一些特性以节省空间):
{
"email": "[email protected]",
"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);
});
}
});
}
在上面,我只是分配相同的角色到每个经过验证的用户。然而,你可以做一个API查找/白名单只有特定的客户端(使用context.clientID)等 - 有很大的灵活性。