为多个用户提供访问权限的Firebase安全规则不起作用
我正在尝试实现Firebase安全规则,以允许用户访问“项目”文档。 我有一个项目集合,每个项目都有一个带有userid的members集合。 用户已通过身份验证 我的结构如下所示:为多个用户提供访问权限的Firebase安全规则不起作用,firebase,flutter,google-cloud-firestore,firebase-security,Firebase,Flutter,Google Cloud Firestore,Firebase Security,我正在尝试实现Firebase安全规则,以允许用户访问“项目”文档。 我有一个项目集合,每个项目都有一个带有userid的members集合。 用户已通过身份验证 我的结构如下所示: 这是我的安全规则,但它不起作用。 有人能帮我吗?我做错了什么 //火基规则 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /projects/{proje
这是我的安全规则,但它不起作用。
有人能帮我吗?我做错了什么 //火基规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectID} {
allow read, get, write: if request.auth.uid != null && exists(/databases/$(database)/documents/projects/{project}/members/$(request.auth.uid));
}
}
}
//颤振呼叫
Stream<List<ProjectModel>> getUserList() {
print("getUSer");
return FirebaseFirestore.instance.collection('projects').snapshots().map(
(snapShot) => snapShot.docs
.map((document) => ProjectModel(
name: document.data()['name'],
owner: document.data()['owner'],
description: document.data()['description']))
.toList());
}
Stream getUserList(){
打印(“getUSer”);
返回FirebaseFirestore.instance.collection('projects').snapshots().map(
(快照)=>snapShot.docs
.map((文档)=>ProjectModel(
名称:document.data()['name'],
所有者:document.data()['owner'],
说明:document.data()['description']))
.toList());
}
尝试以下示例:
可读取或写入项目集合的经过身份验证的用户:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectID} {
allow read, write: if request.auth != null && exists(/databases/$(database)/documents/projects/{projectID}/members/$(request.auth.uid));
}
}
}
注意:在您的成员集合中,其中的文档必须是Auth.uid,如下图所示
您的疑问是什么?你通过认证了吗?您显示的结构似乎混合了集合和文档字段,您能更清楚地说明哪一个是集合吗?谢谢您的回答,我更新了我的问题。现在应该清楚了。请参阅我答案的最新更新。。希望工作:)当然这是工作,但这不是我需要的。@ThiemoImgraben抱歉。。但您需要安全规则,允许用户访问项目文档。。请解释为什么要更新我的答案。。谢谢Kevin,谢谢您的输入,但是成员集合在项目文档中。@ThiemoImgraben。。成功了吗。。还是还有问题?嘿,凯文,谢谢你的输入,但是成员集合在项目文档中。我认为问题是我需要更改颤振调用,因为它需要与规则相同