Firebase - 限制写入授权用户

时间:2018-03-08 07:27:30

标签: firebase firebase-realtime-database firebase-security

我正在编写一个应用程序,我有用户,每个用户都有旅行。 我已设法验证并插入用户的数据。现在我想为旅行列表定义规则。 目前,即使使用相同的定义,我也无法使模拟器工作(获得用户的写入/读取权限,但没有出行,请参阅图片): Failing for 'trips' passing for 'users' 这就是我失败的原因:

{
  "rules": {    
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      },
      "trips" : {
        "$uid" : {
            ".write": "$uid === auth.uid",
            ".read": "$uid === auth.uid"
        }
      }
    }
  }
}

我最终想要的是:

{
  "rules": {    
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      },
      "trips" : {
        "$tid" : {
            ".indexOn": ["uid"],
            ".write": "<only if child field 'uid' is same as auth.uid>",
            ".read": "auth != null"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

那是因为你已经嵌套了你的旅行&#34; &#34;用户&#34;下的规则规则。他们都应该遵守&#34;规则&#34;节点。像这样:

{
  "rules": {    
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      }
    },
    "trips" : {
      "$tid" : {
          ".write": "$tid === auth.uid",
          ".read": "auth!=null",
          ".indexOn":"uid"
      }
    }
  }
}