如何根据自定义声明从Firebase auth获取用户?

如何根据自定义声明从Firebase auth获取用户?,firebase,google-cloud-firestore,firebase-admin,Firebase,Google Cloud Firestore,Firebase Admin,我开始在我的Firebase项目中使用自定义声明来为我的应用程序实现基于角色的授权系统 我将有一个firebase管理脚本,它将为特定用户的uid设置{admin:true}。这将帮助我编写更好、更清晰的Firestore安全规则 admin.auth().setCustomUserClaims(uid,{admin:true}) 到目前为止,一切顺利。我的问题是,我还需要一个仪表板页面,让我知道哪些用户当前是我应用程序中的管理员 基本上,我需要一种基于自定义声明查询/列出用户的方法。有办法做到

我开始在我的Firebase项目中使用自定义声明来为我的应用程序实现基于角色的授权系统

我将有一个firebase管理脚本,它将为特定用户的
uid
设置
{admin:true}
。这将帮助我编写更好、更清晰的Firestore安全规则

admin.auth().setCustomUserClaims(uid,{admin:true})

到目前为止,一切顺利。我的问题是,我还需要一个仪表板页面,让我知道哪些用户当前是我应用程序中的管理员

基本上,我需要一种基于自定义声明查询/列出用户的方法。有办法做到这一点吗

但是,是否至少有一种方法可以检查(使用Firebase控制台)设置为特定用户的
customUserClaims


我目前的解决方案是将该信息(管理员
uid的
)存储在Firestore中的
管理员用户
集合中,并通过我设置或撤销的任何管理员
自定义声明保持该信息的最新状态。你能想出更好的解决方案吗?

为什么不在数据库中创建一个用户节点,然后编写一个特定的属性,如:“IsAdmin:true”?因为据我所知,这会使我的Firestore安全规则变得更加复杂。看见我必须从另一个地方阅读(就像你建议的那样)在允许对某些受保护的数据进行读/写操作之前,在我的数据库中。@cbdev420实际上是您在问题中提到的SO问题/答案中描述的解决方案,Christophe的建议并没有改变授权的实施方式:它仍然使用自定义声明(及其所有优点),但同时,您的用户及其声明列表存储在Firebase数据库中。这是否回答了您的问题?