为多个用户提供访问权限的Firebase安全规则不起作用

为多个用户提供访问权限的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

我正在尝试实现Firebase安全规则,以允许用户访问“项目”文档。 我有一个项目集合,每个项目都有一个带有userid的members集合。 用户已通过身份验证

我的结构如下所示:

这是我的安全规则,但它不起作用。
有人能帮我吗?我做错了什么

//火基规则

    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。。成功了吗。。还是还有问题?嘿,凯文,谢谢你的输入,但是成员集合在项目文档中。我认为问题是我需要更改颤振调用,因为它需要与规则相同