【问题标题】:Multiple rules for different user in Firebase Database rulesFirebase 数据库规则中不同用户的多个规则
【发布时间】:2020-06-09 07:51:07
【问题描述】:

更新:

这就是我的 firebase 数据库的结构,它有两个主要节点结果和调查,如图所示"

这些是我目前的规则:

{
  "rules": {
    "surveys": {
      ".indexOn":["userId"],
    ".read": true,
    ".write": "auth.uid != null"
    },
  "results": {
    ".read": "auth.uid != null",
      "$resultid": {
    ".write": true
  }
  }
  }
}

基本上,当用户进行新的调查时,它会被存储,它会将模板保存在调查中,现在只有经过身份验证的用户才能对其进行写入,所以它非常好,现在是阅读部分,现在任何人都可以阅读整个调查节点,我不能将 auth != null 添加到它,因为当有人分享他们的调查时,即使未经身份验证的用户也应该能够阅读该特定调查并进行操作,所以我应该怎么做才能不让每个人都阅读整个调查节点,但只有他们应该阅读的节点,否则任何人都可以通过提取所有 ID 来执行任何人的调查。顺便说一句,$resultid 规则不起作用,现在仍然允许写访问:(

【问题讨论】:

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


    【解决方案1】:

    你能得到的最接近的:

    {
      "rules": {
        "surveys": {
          ".read": "auth != null",
          "$surveyid": {
            ".read": true,
            ".write": true
          }
        }
      }
    }
    

    这些规则:

    • 允许任何身份验证用户阅读所有调查。
    • 允许知道调查 ID 的任何人读/写该调查。您会注意到,这与您的第二个要求略有不同,因为除非他们登录,否则无法知道是谁创建了每个调查。

    更新

    对于您要添加的结果:

    "results": {
      ".read": "auth != null",
      "$resultid": {
        ".write": true
      }
    }
    

    【讨论】:

    • 感谢您的回复,但是结果节点呢?
    • 我也为此添加了一些东西。
    • 遗憾的是,如果我使用邮递员并发送一个帖子请求,它确实会被添加到数据库中
    • 在这种情况下,请编辑您的问题以包含确切的steps on how to reproduce that problem(请阅读链接,它很有用)。
    • 你好,很抱歉问题的形成很奇怪,我已经正确更新了问题,请帮我解决这个问题,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2017-07-15
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多