【问题标题】:Firebase: How to prevent writing a specific field in firestore? [duplicate]Firebase:如何防止在 Firestore 中写入特定字段? [复制]
【发布时间】:2019-01-17 01:42:07
【问题描述】:

规则集保护用户的条目如下:

  • 只有他或管理员可以读取他的数据
  • 只有管理员可以更新用户的权限
  • 用户可以更新他的所有数据,除非他设置了权限对象

规则如下:

match /users/{userId} {
  allow read: if isCurrentUser(userId) || isAdmin();
  allow write: if (isCurrentUser(userId) && !isModifyingPermissions()) || isAdmin();

  function isModifyingPermissions(){
    return request.resource.data['permissions'] != null;
  }
}

我坚持使用 isModifiyingPermissions() 函数。如果请求具有permissions 属性的值,它会正确拒绝写入。但是,如果没有提供 permissions 属性,则规则会崩溃,说明如下:

Error: simulator.rules line [19], column [15]. Property permissions is undefined on object.

如何编写“检查请求资源的属性是否存在”?

【问题讨论】:

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


    【解决方案1】:

    好的,解决方法如下:

      function isModifyingPermissions(){
        return request.resource.data.keys().hasAny(["permissions"]);
      }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2019-02-06
    • 1970-01-01
    • 2016-11-23
    • 2018-06-27
    相关资源
    最近更新 更多