使用运行时生成的集合设置Firestore安全规则

时间:2018-07-17 15:38:03

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

只要有新用户注册我的应用程序,我的Firestore数据库就会创建一个新的集合。集合的名称是新用户的用户名。我想使此集合中的文档具有受限的写访问权限。

service cloud.firestore {
  match /databases/{database}/documents {

    match /User1/{info} {
      allow read: if signedIn();
      allow write: if isOwner(User1);
    }

    function signedIn() {
        return request.auth != null;
    }

    function isOwner(userId) {
      return request.auth.uid == userId;
    }    
  }
} 

如果当前用户为User1,则此方法有效,但不适用于任何注册的新用户。如何将此Firestore安全规则添加到每个新用户?

1 个答案:

答案 0 :(得分:3)

我注意到第一条规则与/User1/{info}匹配,这意味着它将与集合User1中的任何路径匹配。相反,如果使用方括号,则此值将成为通配符,这意味着匹配将适用于任何值。请查看guide中的示例以获取更多信息。

service cloud.firestore {
  match /databases/{database}/documents {

    match /{username}/{info} {
      allow read: if signedIn();
      allow write: if isOwner(username);
    }

    function signedIn() {
        return request.auth != null;
    }

    function isOwner(userId) {
      return request.auth.uid == userId;
    }    
  }
}