3

我一直在寻找和玩 Firebase,我发现它真的很有趣。

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

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

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

先感谢您。

4

1 回答 1

4

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

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

这负责 UX 部分。为了保护它免受攻击,您将利用 Firebase 的综合安全规则

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

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

".read": "root.child('logged_in_users/'+auth.uid).val() === auth.ip_address"
于 2013-11-03T16:47:53.160 回答