我有一个白标 Android 移动应用程序,可以为大约 30 个客户端构建,具有自己的功能(所有这些应用程序都有一个唯一的应用程序 ID)。所有这些应用程序都使用单个 RTDB 连接到 Firebase 项目。数据库中的客户端数据按客户端名称命名的根节点进行分割。
问题是如何限制客户端在未经身份验证的情况下访问数据,但仅使用应用程序 ID?也许将客户的数据拆分到单独的数据库中有意义?单个项目可以创建多少个RTDB?
所有这些应用程序都使用单个 RTDB 连接到 Firebase 项目。数据库中的客户端数据由以客户端名称命名的根节点分割。
据我了解,您有一个 Firebase 项目,其中所有 30 个客户端都使用相同的实时数据库实例,并且每个客户端都由一个节点表示,该节点是您的根引用的子节点。如果我理解正确的话,我可以说这是一种非常常见的方法。
问题是如何限制客户端未经身份验证但仅使用 app-ids 的数据访问?
不幸的是,如果没有 Firebase 身份验证,您无能为力。如果您决定不使用 Firebase 身份验证,则意味着知道您的项目 ID 和应用 ID 的任何人都可以从您的数据库读取/写入。这显然很糟糕,因为恶意用户可以利用它。
也许将客户的数据拆分到单独的数据库中有意义?
这也是一种广泛使用的解决方案,其中每个用户都有自己的实时数据库实例。但这并不意味着您不必实施 Firebase 身份验证并使用 Firebase 实时数据库安全规则来保护数据库。
单个项目可以创建多少个RTDB?
根据实时数据库的官方文档关于限制和配额:
您最多可以在同一个 Firebase 项目中创建 1,000 个 数据库实例。
但是仅如果您使用Blaze定价计划。因此,如果您只有 30 个客户,则无需担心。