首页 > 解决方案 > Firestore 安全规则按组共享文档

问题描述

我有一种情况,用户可以创建一个文档,然后与一组其他用户共享。他们可以将其分享给多个不同的组。我不知道如何为此制定规则。

下面是数据库结构:

在此处输入图像描述

因此,在该组中,您有一个已共享给它的文档列表。我的应用程序加载用户所在的组,然后想要加载文档数组中的所有文档。我需要一种方式服务器端说这没关系。到目前为止,只有文档的所有者可以阅读它。

我在每个文档中放置了一个字段,其中包含与其共享的每个组的 ID。我想我想说“检查用户是否是 sharedToGroups 中任何组的成员”列表,但我无法弄清楚如何做到这一点,除非我在 userProfile 文档中的某个地方维护另一个列表,其中包含一个圆圈列表用户是其中的一员。即使那样,我也会尝试比较 2 个列表,但我不确定我能否做到这一点。

如果能够以某种方式从发出请求的位置获取组 ID,并查看它是否在 sharedToGroups 数组中,那就太好了。

任何关于如何实现这一点的帮助或评论将不胜感激,也许它需要不同的数据库结构。

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


您可以尝试这种方法:

我不确定这是否会对您有所帮助,但在我看来,也许您可​​以为文档启用firestore权限group。如在规则中,为组设置一个函数,该函数使用存储在文档中的用户 ID 验证用户,该 ID 附加在身份验证中,通过firebase auth

因此,与其尝试限制每个文档的访问,不如限制每个组的访问。


推荐阅读