【问题标题】:Having Confusion in Firebase Rules for my App对我的应用程序的 Firebase 规则感到困惑
【发布时间】:2019-10-20 10:25:02
【问题描述】:

我在编写 firebase 权限时遇到问题。如果经过身份验证,我希望那些用户只写入用户部分,其他所有人都应该能够读取或写入数据库的任何部分。有什么方法可以为每个表定义规则,默认为 true 并限制只对用户部分进行身份验证,或者我必须为每个表显式编写规则。

附言。如果有人可以指导我应该为具有以下结构的消息发送和接收功能的应用程序实施哪些规则,那就太好了:

-聊天

-朋友

-用户

-message_notifications

-消息

-通知

  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {

      "Users":{
      "$uid":{
            ".read": true,
             ".write": "auth.uid == $uid"
      }
    }

  }

}

【问题讨论】:

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


    【解决方案1】:

    有什么方法可以为每个表定义规则,默认为 true 并限制仅用户部分进行身份验证?

    一旦用户可以访问您数据库中某个级别的数据,他们就可以访问该级别下的所有数据。您不能在较低级别撤销此权限。所以没有办法让用户访问根目录下的所有数据,然后排除一个节点。

    可以做的是使用$ 通配符规则来创建两种类型的顶级节点:

    {
      "rules": {
        "Users":{
          "$uid":{
            ".read": true,
             ".write": "auth.uid == $uid"
          }
        },
        "$others": {
          ".read": true,
          ".write": true
        }
      }
    }
    

    通过以上规则,用户可以:

    • 如果用户知道该用户的 UID,则仅读取该用户的 /Users/$uid 节点。
    • 只能自己写/Users/$uid节点。
    • 可以读写所有其他数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2021-09-11
      • 2013-08-29
      • 2019-07-11
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多