要更新用戶配置文件中的規則,通常意味着更新其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)等 - 有很大的靈活性。