Firebase Auth - 自定义声明的用户列表
Posted
技术标签:
【中文标题】Firebase Auth - 自定义声明的用户列表【英文标题】:Firebase Auth - list of users by Custom Claims 【发布时间】:2019-03-24 22:37:51 【问题描述】:我们在 Firebase 身份验证中使用自定义声明来管理 Firebase 中的访问并允许自定义 UI 体验。
我们现在正在处理用户管理部分,我们找不到通过自定义声明检索用户的方法。
例如,用户属于某个组织并具有不同的访问级别 - 管理员或用户。 我们需要允许组织的管理员查看其组织的所有用户。
我们希望避免使用单独的数据库来管理组织用户,以免数据翻倍。
有可能吗? 我们可以在通过特定的自定义声明过滤所有 Auth 用户的同时检索他们吗?
谢谢!
【问题讨论】:
你是怎么解决这个问题的?您是否将该信息保存在数据库中并与用户的 customClaims 保持同步?就像,每次您将admin: true
设置为您的一个用户时,您都会将他的userId
保存在数据库中的admin
节点/集合下?类似的东西?还是你想到了更好的东西?谢谢。
目前,我们只加载整个用户列表并按所需声明对其进行过滤。但随着列表的增长,我们可能会添加一个加倍的数据库表。
【参考方案1】:
没有内置 API 可以获取拥有特定声明的所有用户的列表。
有一个 API 可以获取 list of all users in the Admin SDK。因此,您可以使用它,然后过滤拥有您正在寻找的声明的用户。
但是这样的表现不会很壮观。因此,如果列出具有特定声明的所有用户是您的应用程序的常见用例,您将需要重新考虑您对使用额外位置存储数据的担忧。复制数据以实现(性能良好的)用例在 NoSQL 中很常见。
【讨论】:
有没有办法检查(使用 Firebase 控制台)为特定用户设置的声明? 你可以用一个函数来做。常量用户 = 等待 admin.auth().getUserByEmail(email); if (user.customClaims) console.log(user.customClaims) @cbdeveloper 这仍然是真的吗? 是的。如果有一个新 API 只允许获取具有特定声明的用户,那么我在答案中链接的文档中会提到它。以上是关于Firebase Auth - 自定义声明的用户列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firebase 中创建基于角色的访问控制或自定义声明
Firebase Auth Custom 声明未传播到客户端