正确使用 Firebase Auth 自定义声明

Mar*_*ner 0 firebase firebase-authentication

这是一个通用的问题,但我确实有一个特定的问题!提前致谢...

我在 Firebase Auth 中使用自定义声明。具体来说,我正在使用 Angular/fire。一般来说,我试图设置一个自定义声明来标识用户角色和用户在我的数据库中拥有的列表。

首先,我使用了:

const uid = 000111222333
admin.auth().setCustomUserClaims(uid, {
    business: true
});
Run Code Online (Sandbox Code Playgroud)

完美地工作。在授权检查令牌时,我看到了声明。

其次,我尝试设置一个角色(希望除了列表 ID 之外还设置这个):

const uid = 000111222333 // same user
const listing id = 'abc123xyz'
admin.auth().setCustomUserClaims(uid, {
    [listing.id]: true
});
Run Code Online (Sandbox Code Playgroud)

这就是问题所在。现在,当我检查身份验证令牌时,我看到列表 ID 声明但业务角色声明消失了。

这是为什么?

我应该只有一个属性并使用数组将两个声明存储为字符串吗?如果我需要设置多个声明(例如角色)以及用户拥有的 20 个列表 ID,那么最佳实践是什么。我希望使用此方法,因为它使 httpsCallable 函数和存储安全性更易于管理。

Ren*_*nec 5

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

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