具有不同用户类型的Firebase身份验证

时间:2017-12-13 20:53:22

标签: android firebase-authentication

我正在开发一些我有两个应用程序的东西 - 一个用于'请求者'用户和一个响应者'用户,我目前正在使用Firebase for Auth。用户使用电子邮件/密码组合登录,这是问题的根源:

问题在于用户冲突 - 因为auth模块连接到Firebase控制台中的单个项目,响应者可以在技术上登录请求者应用程序,反之亦然,这会导致问题,因为很好,后端conks out - API不允许他们访问,因为数据库没有在表中找到他们的数据,并且应用程序行为不正常(读取:崩溃)。

我知道有类似的问题(Android - Firebase - Different types of Users Login),但我真的想问的是,是否可以通过某种方式避免这种令人讨厌的情况。我想到的一些选择是:

  1. 在数据库中进行手动检查,如果用户输入的类型不正确,请将用户注销 - 可以完成,但是很繁琐且耗费数据/时间。
  2. 仅针对每种用户类型在Firebase中创建不同的项目 - 这是低效的 - 虽然我使用Firebase进行身份验证,但我使用Mongo进行存储,所以这并不重要但是如果/当我切换到Firebase进行存储时,那么我的服务器代码将变得复杂,缓慢和混乱,因为必须访问不同的数据库才能访问请求者和响应者数据
  3. 滚动我自己的身份验证 - 感觉这是一个坏主意,但它有助于解决当前问题,同时打开不同的蠕虫病毒,因为我还需要实施Firebase云消息传递
  4. 切换到另一个身份验证提供商 - 我可以在此处接受建议
  5. 我还预计一个响应者可以创建帐户并使用请求者应用程序的情况,在这种情况下发生冲突并需要解决 - 我可以禁止响应者使用相同的电子邮件ID登录请求者,但这可能无法满足用户可能(并且将要)使用一个电子邮件ID进行处理的真实场景。

    任何人都可以帮助我采取正确的方法来获取和/或解决此问题的任何提示/解决方案吗?

    ----- 2017年12月14日编辑--------

    我在同一个项目下也列出了两个应用程序(附带截图),所以我的下一个问题是,当请求者用户尝试登录/注册为响应者时,是否会发生冲突,反之亦然?

    Screenshot of two apps in one Firebase Project

1 个答案:

答案 0 :(得分:1)

通过解析ID令牌并检查其声明,考虑使用自定义用户声明并通过数据库规则强制执行访问,或者如果您使用自己的端点。 Firebase管理SDK提供了执行此操作的工具:https://firebase.google.com/docs/auth/admin/custom-claims

Firebase Auth团队也在努力向客户公开这些声明,以简化其中所需的UI更改。