限制 Firebase 中经过身份验证的用户的并发登录

Rez*_*eza 3 firebase firebase-security

我一直在寻找并使用 Firebase,我发现它非常有趣。

到目前为止,我已经尝试了一些简单的身份验证和安全策略设置,但现在我遇到了一个问题,该问题似乎没有在文档中涵盖,而且我在 Google 或此处找不到任何内容。

问题是我找不到限制每个电子邮件/密码并发登录数量的方法。

我希望有一个选项,付费客户一次只能从 1 个 IP 登录。换句话说,我不希望人们能够购买帐户,然后与朋友和家人共享该帐户,然后使用相同的凭据同时连接到系统。

先感谢您。

Kat*_*ato 5

每当用户登录时,您都可以通过写入 Firebase 中的路径来控制访问。然后您可以检查该路径以确保一次仅存在一个用户:

  • 每次用户登录时将值写入路径(例如logged_in_users/$user_id
  • 当用户断开连接时使用onDisconnect()删除该值
  • 在额外的登录尝试中检查该路径的值
  • 如果该值存在则显示错误,如果不存在则允许登录

这负责用户体验部分。为了确保其免受攻击,您将利用 Firebase 的全面安全规则

  • 使用自定义登录策略生成您自己的身份验证令牌
  • 将 IP 地址作为令牌内数据的一部分包含在内
  • 如果 Logged_in_users/$user_id 设置为不同的 IP 地址,则拒绝登录尝试
  • 编写安全规则以防止其他IP的读/写

假设您已生成包含 IP 地址的令牌,您的安全规则可能如下所示:

".read": "root.child('logged_in_users/'+auth.uid).val() === auth.ip_address"
Run Code Online (Sandbox Code Playgroud)