【问题标题】:Allow another user to read/write data Firebase Database允许其他用户读取/写入数据 Firebase 数据库
【发布时间】:2019-04-01 20:59:48
【问题描述】:

我有一个这样的数据库树

users
-UID
--items
---all the data

我想在 UID 下添加一些内容,例如 shared:another-UID 并允许另一个 UID 读取和写入项目下的所有内容。

例如:

users
-UID
--shared:different_UID
--items
---all the data

我现在的规则是这样的

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

我将如何更改我的规则以允许这样做?

【问题讨论】:

  • 不太清楚你在这里想要完成什么。也许您可以通过显示当前不允许的特定查询来说明,您希望在给定一些新约束的情况下允许该查询。
  • 请检查编辑。我已经阅读了安全规则,但不太了解如何正确设置它们。目前 UID 下的所有内容都仅限于该 UID。我想添加另一个 UID 来查看和编辑所有受当前规则正常限制的数据。我知道我需要添加一个 ||并引用共享的 UID 值。但我不确定如何在规则中引用它

标签: firebase-realtime-database firebase-security


【解决方案1】:

在这种情况下,您的规则将变为:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && (auth.uid == $uid || data.child('shared').val() === auth.uid)",
        ".write": "auth != null && (auth.uid == $uid || data.child('shared').val() === auth.uid)"
      }
    }
  }
}

换句话说:如果密钥与其用户 ID 相同,或者如果他们的用户 ID 存储在数据下的 shared 属性中,则用户可以读取/写入此数据。

【讨论】:

  • 完美。我认为这是唯一的障碍是弄清楚 data.child('shared') 部分。谢谢
猜你喜欢
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2020-11-28
  • 2020-08-19
  • 2018-08-12
  • 1970-01-01
  • 2020-06-09
相关资源
最近更新 更多