让我们考虑以下情况:
有两个用户:user-1
和user-2
有一个lists
集合:/lists/{id}
它具有以下文档:
{ id: list-1, title: 'List 1', collaborators: { user-1: true } }
{ id: list-2, title: 'List 2', collaborators: { user-2: true } }
...
还有一个tasks
集合:/tasks/{id}
它具有以下文档:
{ id: task-1, title: 'Task 1', listId: { list-1: true } }
{ id: task-2, title: 'Task 2', listId: { list-1: true } }
...
现在,让我们考虑一下user-1
正在尝试使用以下查询来提取属于list-1
的所有任务:
firestore.collection('tasks').where('listId.list-1', '==', true).get()
user-2
也在尝试做同样的事情,即使他不是list-1
的合作者:
firestore.collection('tasks').where('listId.list-1', '==', true).get()
我的问题是,如何编写安全规则,以便只有user-1
可以访问属于list-1
而不是user-2
的任务?列表项的collaborators
字段应用于控制用户有权访问的任务。
换句话说,user-1
应该能够检索ID为task-1
和task-2
的任务,而user-2
不能。