在firebase中,我希望使用自定义用户声明来设置用户角色,以及用户可以访问的模块。
如果用户是admin,则自定义声明为:
{isAdmin: true}
然后,现在我以我的云功能代码授予管理员访问用户模块的权限:
exports.grantUserAccess = functions.https.onCall((data)=> {
return firebase.auth().setCustomUserClaims(data.uid, {
hasUserModule: true
}).then(() => {
return 'complete'
})
})
所以我期望的是:
{isAdmin: true, hasUserModule: true}
但是当我打印出用户声明时,似乎isAdmin: undefined
,然后是hasUserModule: true
,它基本上覆盖了旧的声明,为什么?
答案 0 :(得分:1)
根据documentation on custom claims:
注意:此操作始终会覆盖用户现有的自定义 索赔。但是,如果在用户上定义了相同的自定义用户声明 通过自定义身份验证登录,则在 自定义令牌具有更高的优先级,并且总是覆盖自定义 通过此API在用户上定义的用户声明。
所以,这是预期的行为。