正确使用Firebase Auth自定义声明

时间:2019-09-19 18:13:02

标签: firebase firebase-authentication

这是一个一般性的问题,但是我确实有一个特定的问题!预先感谢...

我正在使用带有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函数和存储安全性的管理。

1 个答案:

答案 0 :(得分:1)

doc中所述,当您调用admin.auth().setCustomUserClaims()时,它“ 总是覆盖用户现有的自定义声明”。

因此,这意味着您每次想添加自定义声明时,都需要先阅读现有声明,然后再使用新声明进行设置。