如何仅在Firestore中所有匹配都为真时才允许访问

时间:2018-11-26 09:26:49

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

在Firestore中,我们可以设置自己的安全规则。我添加了2条安全规则,在其中我在第一条规则中授予了所有crud操作访问权限,并在第二条规则中拒绝了对特定集合的所有文档的删除访问权限。但是由于第一条规则的真实条件,因此忽略了第二条规则的条件,因为在文档中已经提到了对于任何真实条件的访问都被授予。

我可以用AND(而不是OR)做任何方式。

以下是我的参考规则:

service cloud.firestore {
  match /databases/{database}/documents {
  function isAuthenticated(){
    return request.auth.uid != null;
  }
  match /{collection}/{document = **}{
    allow get, update, delete, create: if isAuthenticated()
  }     
    match /records/{record} {
        allow delete: if false
    }
  }
}

1 个答案:

答案 0 :(得分:0)

不是所有规则都为“或”,因此它会在查询,更新等上立即解析为true 将被处理。

允许所有用户使用纯脚本并不是一个好习惯,因为他们只能清除您的数据库。即使他们是一个好演员,使用错误代码仍然可能会偶然发生。