我有一个iOS应用,我想限制访问权限,只允许来自特定电子邮件域的用户使用。 该应用要求用户使用其Google帐户登录。 我在网上找到了各种答案,建议添加
".read": "auth.token.email.endsWith('gmail.com')"
但是,这似乎并未在登录页面中返回错误,而是仅在相关用户尝试访问数据库时。有什么建议吗?
答案 0 :(得分:0)
由于所需的电子邮件域名为 @ gmail.com ,您只需停用电子邮件和密码并启用 Google 登录方法即可在您的Firebase控制台中。因此,用户登录您应用的唯一方式是使用Google帐户。
答案 1 :(得分:0)
包含电子邮件和密码注册选项,只需检查应用中的域名。这将是一个简单的电子邮件地址字符串比较测试。
或者只需启动您要向其发送电子邮件的服务器以进行验证。这样,每次添加额外域时,您都不必推出新的更新。您可以尝试查看cloud functions是否有用,而不是启动新服务器。
答案 2 :(得分:0)
你必须强制执行。您有多种工具可以执行此操作:
在signInWithCredential结算后,您可以检查域名,并确认它是google.com提供商。如果您允许电子邮件/密码用户,则还需要验证这些用户。如果用户不符合您的条件,请使用该用户的删除API,并向用户发出需要使用某个帐户登录的错误。
强制检查您的规则,因为您无法始终信任客户。确保如果用户注册并且未被删除,他/她将无法访问数据。
使用具有用户创建触发器的Firebase功能。在创建用户时,检查您的条件是否得到满足,如果没有,请使用firebase-admin模块删除该用户。
如果您使用适用于iOS的Google登录库获取Google凭据,则可以在Firebase中签署加密奖励并阻止登录尝试之前查看Google用户电子邮件和Google ID令牌。
编写自己的清理脚本:如果您托管自己的服务器而不想使用Firebase功能,则可以运行每日脚本,使用Firebase CLI SDK下载所有用户,然后删除所有用户使用不符合条件的firebase-admin SDK。