上下文: 在Firebase设置中,有一个“权限”标签。这显示与具有对Firebase项目和控制台的管理员访问权限的帐户关联的用户/电子邮件。
我可能发誓,我曾经看到一个文档,描述了一种检查Firebase auth中的用户帐户是否也是Firebase项目管理员的方法或某种方式。
我真的无法分辨这是在做梦(是的,我在做梦代码)还是我真的看到了。我经常工作到深夜,然后在计算机前入睡。
问题: 有什么办法可以判断用户是否也是Firebase应用程序的管理员? IE中的用户电子邮件与在Firebase的IAM /访问管理部分中列为“所有者”角色的电子邮件相匹配?
我目前正在为我的应用编写一个管理面板,因此此功能将非常有用。
如果这种事情不存在,那么谁能建议一种替代方法来管理和授权能够登录管理仪表板的用户来控制该应用程序?我已经了解了自定义声明,因此,如果没有更好的建议,我将使用它们。
答案 0 :(得分:1)
好吧,仅通过您的应用使用FirebaseAuth
,我认为您不能做到(就我所知)。但是,您可以轻松实施Admin SDK来管理您的 Custom Claims 。基本上,您可以使用Admin SDK并找出要访问的“角色”。
引用Firebase
自定义声明可能包含敏感数据,因此它们仅应 由Firebase Admin SDK在特权服务器环境中设置。
和
只能通过用户的ID令牌检索自定义声明。 要修改基于客户端的用户界面,可能需要访问这些声明 在用户的角色或访问级别上。但是,后端访问应该 验证后始终通过ID令牌强制执行,并且 解析其主张。自定义声明不应直接发送到 后端,因为令牌之外无法信任它们。
最新的版权声明传播到用户的ID令牌后,您可以 通过获取ID令牌来获取它们。
因此,您只需要在应用程序的(客户端)上实现FirebaseAuth
,但需要使用服务器的额外实现。
请参阅Firebase use cases,它们可能会满足您的需求,您可以选择一个更方便的产品。
答案 1 :(得分:0)
花了我很长时间才能找到我想要的东西-这实际上是我的意思,我偶然发现了它。事实证明,它不能一开始就做我想做的事,因为它仅在某些触发器上可用。
这里是:context.authType
https://firebase.google.com/docs/reference/functions/functions.EventContext#.authType
用户的权限级别。有效值为:
ADMIN Developer用户或通过服务帐户验证的用户。用户 已知用户。 UNAUTHENTICATED未经身份验证的操作null对于事件 不提供用户信息的类型(实时除外) 数据库)。
一无所有,Firebase!只是开个玩笑-尽管我们能在可调用函数和Firebase触发器上获得此信息会很棒,因为这将有助于进一步保护对管理员功能具有高层访问权限的客户服务或开发人员的托管后端管理应用程序。该变量似乎在可调用函数上不可用,但在newUser
触发器上可用-奇怪,因为无论如何都不能对用户注册进行身份验证?