Firestore:使用安全规则限制 child/field 访问

Firestore: restricting child/field access with security rules

如果我理解正确 [1],在 Firebase 中没有办法限制用户访问他们拥有的数据,也没有办法隐藏敏感列。这在新发布的 Firestore 中更好吗?它有解决方法吗?

我能想到的一种替代方法是通过 Cloud Functions 路由此类请求,以便根据需要进行过滤,而不是允许直接访问。这行得通吗?

[1] Restricting child/field access with security rules

Firestore(和 Firebase)并没有真正区分谁 "owns" 数据。您可以制定规则来实施所有权政策,但没有任何内在因素会迫使这种情况发生。

在 Firestore 中,规则适用于整个文档,因此您无法隐藏敏感列。一个典型的解决方案是在一个文档中有 public 个字段,在一秒钟内有私有字段。然后你可以 .

像这样编写多个文档时,您有几种选择。一种方法是将整个记录写入私有部分,并有一个函数过滤器,然后写入 public 部分。这样做的缺点是在您编写私有部分和您可以看到更新的 public 部分之间存在延迟。

另一种方法是使用写入批处理以原子方式写入两个文档。与需要在线的完整事务不同,写入批处理可以在离线时使用,并且适用于需要对两个或多个文档进行原子更改但不希望任何其他写入竞争的情况。更新自己的配置文件的用户将是写入批处理非常有效的一个很好的例子。