这是一个一般性的问题,但是我确实有一个特定的问题!预先感谢...
我正在使用带有Firebase身份验证的自定义声明。具体来说,我正在使用Angular / fire。通常,我试图设置一个自定义声明,以标识用户角色和用户在数据库中拥有的列表。
首先,我使用:
const uid = 000111222333
admin.auth().setCustomUserClaims(uid, {
business: true
});
工作完美。在检查授权令牌时,我看到了索赔。
第二,我尝试设置一个角色(除了列表ID外,还希望设置这个角色):
const uid = 000111222333 // same user
const listing id = 'abc123xyz'
admin.auth().setCustomUserClaims(uid, {
[listing.id]: true
});
这是问题所在。现在,当我检查auth令牌时,我看到了列表ID声明,但业务角色声明消失了。
那是为什么?
我应该只有一个属性,并使用数组将两个声明都存储为字符串吗?如果我需要设置多个声明(例如角色)以及用户拥有的20个列表ID,那么最佳实践是什么?我正在寻找使用此方法的方法,因为它可以简化httpsCallable函数和存储安全性的管理。
答案 0 :(得分:1)
如doc中所述,当您调用admin.auth().setCustomUserClaims()
时,它“ 总是覆盖用户现有的自定义声明”。
因此,这意味着您每次想添加自定义声明时,都需要先阅读现有声明,然后再使用新声明进行设置。