管理火力地堡用户在应用程序

问题描述:

我开发一个Android应用程序,其需要能够管理用户列表。问题是,与用户自行注册并管理自己帐户的社交应用程序相比,Firebase似乎没有为这种情况提供太多支持。我可以在Firebase控制台中创建用户,但这还不够。管理火力地堡用户在应用程序

用户是通过电子邮件和密码进行注册,有些用户必须拥有管理员权限,并允许修改用户列表,我可以强制执行此使用安全规则。但是,Firebase控制台中列出的用户没有任何地方可以为权限提供额外信息,因此此信息必须位于主数据库中。在控制台中编辑数据库树是不合理的,因此必须在应用程序中完成。

第一个问题是,有没有办法让来自应用程序的用户列表。作为解决方法,我只能在应用程序中使用createUserWithEmailAndPassword()函数创建用户。然后,我可以将额外的用户信息保存在主数据库中,并保持同步。

除了一些小问题(例如新创建的用户自动登录,注销admin用户),该功能开始失败并且错误日志指示“TOO_MANY_ATTEMPTS_TRY_LATER”。这是不可接受的。

任何建议将不胜感激。谢谢。

+0

对于新用户签约全自动检查小问题[这个答案](http://*.com/a/38013551/4916627) –

+0

什么是你的问题? –

+0

@Frank van Puffelen我的问题是如何规避太多的尝试错误,或者如何以其他方式为用户分配权限。 –

用户是通过电子邮件和密码进行注册,有些用户必须 具有管理员权限,并允许修改用户列表,我可以 执行本使用安全规则。然而,在 火力地堡控制台中列出的用户没有任何地方放了 权限的额外信息,所以此信息必须在主数据库中去

你应该为管理员单独worflow这将增加管理员UID到数据库节点“管理员”。

然后,每当你需要检查,如果你的用户是利用规则,你可以管理员使用类似于 “.WRITE”:‘root.child(‘管理员/’+ $ USER_ID).exists()’

创建并登录其他用户似乎很直观给我,我会建议使用dynamic links的邀请,让邀请的用户,安装应用程序,创建自己的用户,并在自己的签名。然后,您可以使用动态链接信息来查看邀请谁并相应采取行动的人员。

+0

添加管理员的UID到一个数据库节点是一个问题,因为没有办法得到应用中的所有用户的UID列表(复制粘贴和控制台每个UID是不是合理的)。这就是我自己创建用户的原因。我创建它们后立即获得UID。使用邀请也不行,想想管理员将职员列表输入数据库并为其分配角色的更严重的应用程序。不过谢谢你的回答。 –

+0

为了澄清,我知道如何使用您建议的安全规则。问题是以编程方式获得UID。 –

+0

在某些时候,您将用户设置为管理员,无论是在创建时还是手动创建时,都应该有权访问该用户的UID。如果其他用户负责创建自己的记录,那么定义一个特殊的动态链接或工作流程,在我注册后,如果我是管理员,则将我的UID记录到管理员节点。 – jirungaray