我有两个与Firebase项目链接的应用程序。客户应用程序和管理员应用程序。管理员应用程序的目的是控制和管理来自客户应用程序的应用程序数据。
但是,我希望管理应用程序具有很多限制,例如其自己的单独帐户创建和登录功能。我注意到,使用客户应用程序创建的登录凭据也可以与管理应用程序一起使用。如何确保管理应用程序的auth
功能安全,受限制且唯一。
答案 0 :(得分:0)
登录Firebase身份验证只不过是对用户进行身份验证。它从本质上验证了您是Benny,并且您不是Frank。
与用户关联的任何权限都来自其他地方。例如,如果您使用Firebase Realtime数据库或Cloud Firestore,则具有服务器端安全性规则,可以强制用户仅访问其授权的数据。
在您的情况下,您只希望允许某些用户使用管理应用。为此,我考虑使用using custom claims。使用这种方法,您可以向管理员用户的个人资料添加自定义声明。使用Firebase Admin SDK在受信任的环境中执行此操作最简单。例如,在Node.js中,它是:
admin.auth().setCustomUserClaims(uid, {admin: true})
运行此代码后,由uid
标识的用户有一个名为admin
的自定义声明,其个人资料中的值为true
。
现在,当用户登录到您的管理应用程序时,您可以检查该admin
声明是否存在,并且仅在存在该应用程序时才允许他们进入。当然,您还需要在只有管理员授权的任何服务器端操作中检查自定义声明的存在。
有关此的更多信息,请参见: