我的应用程序的Firebase规则混乱

问题描述 投票:0回答:1

我在编写Firebase权限时遇到麻烦。我希望那些经过身份验证的用户仅写入用户部分,而其他所有人都应该能够读取或写入数据库的任何部分。有什么方法可以为每个表定义规则,默认设置为true,并且仅限制要验证的用户部分,或者我必须为每个表显式编写规则。

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

-聊天

-朋友

-用户

-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-rules
1个回答
0
投票

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

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

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

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

使用上述规则,用户可以:

  • 如果他们知道该用户的UID,则仅读取该用户的/Users/$uid节点。
  • 只能写自己的/Users/$uid节点。
  • 可以读取和写入所有其他数据。
© www.soinside.com 2019 - 2024. All rights reserved.