用于在用户之间共享数据的 Firestore 安全规则
Posted
技术标签:
【中文标题】用于在用户之间共享数据的 Firestore 安全规则【英文标题】:Firestore security rules to share data between users 【发布时间】:2021-01-19 11:54:11 【问题描述】:假设我想创建一个允许用户管理购物清单的应用。用户应该能够与其他用户共享他的购物清单,但未被“邀请”的用户不应访问此数据。
如果我想在不共享数据的情况下实现这一点,我可以很容易地保护用户数据:
service cloud.firestore
match /databases/database/documents
match /users/userId/list
allow read, update, delete: if request.auth != null && request.auth.uid == userId;
allow create: if request.auth != null;
但我如何确保“受邀”用户也能够读取和写入这些文档?
数据将按如下方式存储:
- Collection: Lists
- Subcollection: Items
List
文档可能需要跟踪允许哪些用户添加或删除Items
。
【问题讨论】:
您打算如何声明“受邀”用户?在文档的列表中?作为集合中的文档? 我想这将取决于安全规则的实施,但我已经更新了我的问题。 【参考方案1】:在如下所示的子集合中声明受邀用户 /users/userId/list/invited/userId
在 Firestore 规则中,您可以检查受邀用户子集合中是否存在具有用户 ID 的文档。
service cloud.firestore
match /databases/database/documents
match /users/userId/list
allow read, write: if request.auth != null && exists(/databases/$(database)/documents/users/$(userId)/list/invited/$(request.auth.uid));
【讨论】:
以上是关于用于在用户之间共享数据的 Firestore 安全规则的主要内容,如果未能解决你的问题,请参考以下文章
用于将数据从共享托管网页写入 Firebase Firestore 的 Web 应用
为啥 firebase_firestore 安全规则不适用于文档读取
Firestore如何在回收站视图中从firestore检索数据
匿名身份验证用户的这个 Firebase/Firestore 安全规则是不是安全?