Firebase 实时数据库安全规则中的级联

时间:2021-02-01 02:01:39

标签: firebase-realtime-database firebase-security

{
  "rules": {
    "USER":{
      "$uid":{
        ".write": "auth.uid == $uid && auth.uid != null",
        ".read": "auth.uid == $uid && auth.uid != null",
        
        "DELETE_ARTICLE":{
          ".write": "auth.uid == $uid && auth.uid != null",
            ".read": false
        },
        "FOLDER":{
          ".write": "auth.uid == $uid && auth.uid != null",
            ".read": "auth.uid == $uid && auth.uid != null"
        }
      }
    }
  }
}

我想让用户在“USER/{$uid}”而不是“USER/{uid}/DELETE_ARTICLE”中读取他们的字段。 但由于级联条件,我不能这样做。 我该怎么办。

1 个答案:

答案 0 :(得分:0)

正如您发现的那样 permission cascades downwards一旦您授予某人对某个节点的读取或写入权限,您就无法在较低级别取消该权限。< /p>

这意味着,如果您希望对部分数据拥有不同的权限,则需要将这些部分放在数据库的不同分支中。例如,您可以:

USER: {
  "$uid": {
    ...
  }
},
DELETE: {
  "$uid": {
    ...
  }
}

现在您可以分别授予 /USER/$uid/DELETE/$uid 的权限。