公司的FireStore安全规则与更新规则打破(Firestore Security Rules b

2019-11-05 02:11发布

我发布了关于这个问题,昨天,但我创建一个新的更多的细节。 公司的FireStore .setData被更新规则阻止未创建

我已经运行模拟器和规则在那里工作。 此外,当我创建文档并更改setData在SWIFT代码update代码工作。 看来在创建文档时只有失败。 但美中不足的是,当我删除update规则或干脆将其更改为allow update: if false; 使用setData(或视为由规则创建)正常执行。 我不知道怎么回事我也不知道为获得一个更好地了解任何工具。

 match /users_real/{userID} {
    allow create: if true;
    allow read: if isOwner(userID);
    allow update: if (request.writeFields.size() == 1);

}

一组数据:

self.docRef.collection("users_real").document("adfadsf").setData(post) { (error) in

            if let error = error {
                print("He dead!: \(error.localizedDescription)")


            }
            else {
                print("it worked, for now")


            }
        }

Answer 1:

火力支持确认有相关的评估中的错误request.writeFields.size() 估计没有给出何时会是固定的。

该bug的存在,可以用下面的规则来说明:

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

    match /cities/{city} {
      // This should always evaluate to true, but does not.
      allow create: if (request.writeFields.size() == 1) || (request.writeFields.size() != 1);
      allow update: if true;
    }
  }
}

虽然create规则应该始终为true,试图创建一个城市失败,被拒绝的权限。 看来,这个问题request.writeFields不仅影响它所在的规则,同时也为其他路径规则。 对于上面显示的规则,更新现有城市的尝试也失败,被拒绝的权限。



文章来源: Firestore Security Rules breaking with update rule