我正在开发一个有两个应用程序的项目 - 一个用于“请求者”用户,一个用于“响应者”用户,并且我目前正在使用 Firebase 进行身份验证。用户使用电子邮件/密码组合登录,这是问题的根源:
问题在于用户冲突 - 因为身份验证模块连接到 Firebase 控制台中的单个项目中,响应者可以从技术上登录到请求者应用程序,反之亦然,这会导致问题,因为后端出现问题 - API 不允许它们访问,因为数据库在表中找不到它们的数据,并且应用程序行为不稳定(读取:崩溃)。
我知道有类似的问题(Android - Firebase - 不同类型的用户登录 https://stackoverflow.com/questions/46372780/android-firebase-different-types-of-users-login)但我真正想问的是是否有某种方法可以避免这种令人讨厌的情况。我想到的一些选项是:
- 在数据库中进行手动检查,如果用户类型不正确,则将其注销 -可以完成,但很乏味并且耗费数据/时间。
- 在 Firebase 中为每种用户类型创建不同的项目 -这是低效的 - 当我使用 Firebase 进行身份验证时,我使用 Mongo 进行存储,所以这并不重要,但是如果/当我切换到 Firebase 进行存储时,那么我的服务器代码将变得复杂、缓慢且混乱,因为必须访问不同的数据库每个访问请求者和响应者数据
- 推出我自己的授权 -感觉是一个坏主意,但它有助于解决眼前的问题,同时打开不同的蠕虫罐,因为我还需要实施 Firebase Cloud Messaging
- 切换到另一个身份验证提供商 -我愿意在这里接受建议
我还预计响应者可以创建帐户并使用请求者应用程序的情况,在这种情况下会发生冲突并需要解决 - 我可以禁止响应者使用相同的电子邮件 ID 作为请求者登录,但是可能无法满足用户可能(并且愿意)希望使用一个电子邮件 ID 处理所有事情的现实场景。
任何人都可以帮助我采取正确的方法和/或解决这个问题的任何提示/解决方案吗?
----- 2017 年 12 月 14 日编辑 --------
我还在同一项目下列出了两个应用程序(附有屏幕截图),所以我的下一个问题是,当请求者用户尝试登录/注册为响应者时,是否会发生冲突,反之亦然?
考虑使用自定义用户声明并通过数据库规则强制访问,或者如果您使用自己的端点,则通过解析 ID 令牌并检查其声明来强制访问。 Firebase 管理 SDK 提供了执行此操作的工具:https://firebase.google.com/docs/auth/admin/custom-claims https://firebase.google.com/docs/auth/admin/custom-claims
Firebase Auth 团队还致力于向客户端公开这些声明,以简化所需的 UI 更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)