如何安全地限制用户仅列出他们创建的文档?

时间:2019-03-28 07:28:36

标签: firebase google-cloud-firestore firebase-security-rules

我希望能够限制用户仅列出他们创建的文档。 用户标识存储在用户字段中 显然我可以做到

db.collection('projects').where('user', '==', firebase.auth().currentUser.uid)

..,但是任何精通技术的用户都可以删除过滤器并获取所有内容。

我在类似的规则中限制访问权限

match /projects/{project} {
  allow read,update: if request.auth.uid == resource.data.user;
  allow create;
}

但这不起作用,您根本无法列出。

是否可以在不创建用户集合中用户条目的子集合的情况下执行此操作?我真的更喜欢将它们全部放在一个地方。 当然,这是一个非常普遍的情况。

1 个答案:

答案 0 :(得分:0)

假设您将user_id存储在Firestore的“用户”字段中。您可以使用

   String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
   db.collection("projects").whereEqualTo("user", uid)...

省略后,您可以将.get()与onSuccesss或onComplete一起使用,或添加Snapshot侦听器。