【问题标题】:Firebase Security Rules: All Read Single Property?Firebase 安全规则:全部读取单个属性?
【发布时间】:2016-11-05 22:57:36
【问题描述】:

我正在为预订流程设置 Firebase 数据库。每个用户都可以读取和写入自己的预订。规则如下:

"bookings": {
        //user can only read/write their bookings
        "$user": {
          ".read": "auth.uid === $user",
          ".write": "auth.uid === $user",
        }
      }

当用户进行预订时,他们需要在日历中查看不可用的日期。因此,他们在技术上需要能够读取预订节点的到达和离开属性,以便应用可以使用现有预订填充日历并将日期标记为不可用。

当然,在执行此操作时,所有其他预订信息都必须保持私密,并且只能由制作它的用户访问。也许尝试读取单个属性不是正确的解决方案?

【问题讨论】:

    标签: ios objective-c firebase firebase-realtime-database firebase-security


    【解决方案1】:

    我认为更合适的数据结构可能是这样的:

    {
      "bookings": {
        "rooms": {
          "room1": {
            "booking1": {
              "fromDate": timestamp,
              "toDate": timestamp,
              "privateData": {
                "userID": "user1"
              }
            }
          }
        }
      },
      "users": {
        "user1": {
          "name": "Devid"
          "bookings": {
            "room1": {
              "booking1": true
            }
          }
        }
      }
    }
    

    这样您的安全规则就可以允许任何用户只读取fromDatetoDate

    "bookings": {
      //user can only read/write their bookings
      "$roomID": {
        "$bookingID": {
          "fromDate": {  
            ".read": "auth.uid !== null",
            ".write": "newData().userID === auth.uid"
          }
        }
      }
    }
    

    【讨论】:

    • 嗨乔希,这有帮助吗? :)
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 2020-07-11
    • 2018-09-21
    • 2019-08-14
    • 2021-09-21
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多