授予多个用户访问权限的 Firebase 安全规则不起作用

时间:2021-04-10 14:21:20

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

我正在尝试实施 Firebase 安全规则,以授予用户对“项目”文档的访问权限。 我有一个项目集合,每个项目都有一个带有 UserID 的成员集合。 用户已通过身份验证。

我的结构是这样的:
Structure

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

//Firebase 规则

    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());
  }

1 个答案:

答案 0 :(得分:0)

试试下面的例子:

可以读取或写入项目集合的经过身份验证的用户:

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 如下图 Projects Collection

Auth.Uid