firebase - Firestore 安全规则按组共享文档
问题描述
我有一种情况,用户可以创建一个文档,然后与一组其他用户共享。他们可以将其分享给多个不同的组。我不知道如何为此制定规则。
下面是数据库结构:
因此,在该组中,您有一个已共享给它的文档列表。我的应用程序加载用户所在的组,然后想要加载文档数组中的所有文档。我需要一种方式服务器端说这没关系。到目前为止,只有文档的所有者可以阅读它。
我在每个文档中放置了一个字段,其中包含与其共享的每个组的 ID。我想我想说“检查用户是否是 sharedToGroups 中任何组的成员”列表,但我无法弄清楚如何做到这一点,除非我在 userProfile 文档中的某个地方维护另一个列表,其中包含一个圆圈列表用户是其中的一员。即使那样,我也会尝试比较 2 个列表,但我不确定我能否做到这一点。
如果能够以某种方式从发出请求的位置获取组 ID,并查看它是否在 sharedToGroups 数组中,那就太好了。
任何关于如何实现这一点的帮助或评论将不胜感激,也许它需要不同的数据库结构。
解决方案
您可以尝试这种方法:
我不确定这是否会对您有所帮助,但在我看来,也许您可以为文档启用firestore
权限group
。如在规则中,为组设置一个函数,该函数使用存储在文档中的用户 ID 验证用户,该 ID 附加在身份验证中,通过firebase auth
因此,与其尝试限制每个文档的访问,不如限制每个组的访问。
推荐阅读
- algorithm - 生成数字序列的算法
- wordpress - 我想使用不同的菜单作为页面
- python - 从 numpy 数组加载 Tensorflow 记录问题
- php - PHP中数组的排列
- vba - 可以添加哪些 VBA 验证逻辑来防止用户在 Microsoft Access 中输入任何大于 8 的数字?
- flutter - 制作一个应用程序范围的进度条(跨整个应用程序的页面)并使用提供程序在 Flutter 中根据需要管理其状态
- javascript - GAPI (Google API) 驱动器。具有属性“appProperties”的文件请求不起作用
- javascript - 使用 CryptoJS AES 加密 javascript 解密具有文本和图像内容的加密 pdf 文件
- android - 如何在 youtube player api android 中隐藏更多视频(视频建议)
- angular - 无法在 nativescript angular 中动态编译自定义组件