Firebase Firestore安全规则未按预期运行

时间:2019-05-27 07:46:03

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

我为用户ref设置了以下规则:

service cloud.firestore {
  match /databases/{database}/documents {
   match /users/{userId} {
    function handleUserCreate() {
        return(
          request.auth.uid != null && 
          request.auth.uid == userId &&
          !("userRoles" in request.resource.data) &&
          !("userLevel" in request.resource.data)
        )
      }

      function handleUserUpdate() {
        return(
          request.auth.uid != null && 
          request.auth.uid == userId &&
          !("userRoles" in request.resource.data) &&
          !("userLevel" in request.resource.data)
        )
      }

      allow create: if handleUserCreate();
      allow read: if request.auth.uid != null && request.auth.uid == userId;
      allow update: if handleUserUpdate();
    }
  }
}

userRoles userLevel 是我不希望用户完全更改的键。该应用程序会在用户登录时更新用户参考。

但是,如果用户引用中存在userRoles和/或userLevel键,则以下规则拒绝更新,即使来自应用程序的更新对象不包含任何键,更新也被拒绝。

0 个答案:

没有答案