Firebase 中的过滤和权限

Filtering and Permissions in Firebase

我问 关于我的 Firebase 实现。本质上,我试图构建我的 Firebase 数据库,以便我可以拥有一个对象集合,一些用户访问这些对象的一个​​子集。

在我的示例中,我有任务。多个用户将使用这个数据库,并且根据 Firebase 的建议,所有用户的所有任务都是 flattened 作为一个父节点的子节点。每个用户都可以访问自己的任务,由 task 对象中的 creatorId 表示。也许将来可以扩展权限,以便与其他用户共享任务。但是现在,只有所有权和创建者可以读写他们自己的 tasks.

使用 queries 实现起来很简单。我不是安全专家,但在我看来,以某种方式将这些规则与客户端实现中的查询分开执行是一个重要的安全考虑因素。即使我的客户端以这种方式限制访问,并且 all 访问需要使用我们的自定义令牌提供程序进行身份验证,但似乎有人(另一个经过身份验证的用户)可以弄清楚我们是如何检索数据的,并访问其他用户的任务。

我也知道 Rules Are Not Filters (see this),但人们希望大致以这种方式保护数据访问似乎是合理的。

我的问题:

编辑:

我想我第一次阅读 Structuring Data 时,我错过了 "Using Indices to Define Complex Relationships",它解决了这一点。

我想我第一次阅读 Structuring Data 时,我错过了 "Using Indices to Define Complex Relationships",它解决了这一点。

我想在这里做的是,就像 Frank van Puffelen 一样,在我的各种 user 对象上,为每个用户可以访问的项目添加一个键列表。

当我更新或上传项目时,这不会有太大变化(除了复制存储这些关系)。

但是,当获取和侦听 .ChildChanged 事件时,我认为我不会为所有一种类型的对象设置一个 observeEventType 处理程序,而是为每个单独的对象设置一个处理程序用户有权访问。