首页 > 解决方案 > Firebase 实时数据库的安全规则中的级联

问题描述

{
  "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”中。但由于级联条件,我不能这样做。我应该怎么办。

标签: firebase-realtime-databasefirebase-security

解决方案


正如您发现权限向下级联一旦您授予某人对某个节点的读或写权限,您就不能在较低级别取消该权限。

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

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

现在您可以授予对/USER/$uid和的单独权限/DELETE/$uid



推荐阅读