【问题标题】:Firebase Realtime Database, Security Rules - Check other nodesFirebase 实时数据库,安全规则 - 检查其他节点
【发布时间】:2021-08-16 05:41:33
【问题描述】:

我有一个连接到 Firebase 的应用。在这个应用程序中,我有几个子节点,包括“用户”。用户结构如下:

   Users: {
      -uid: {
        -coins
        -email
        -name
        ...
      }
    }

必要时,我需要当用户执行某个操作时,获取硬币的数量,写入另一个节点,然后由主节点重置。 但是,某些具有 root 权限的用户能够更改此值(从一个节点切换到另一个节点时)。如何使用安全规则检查辅助节点的 newData 是否对应于用户中的硬币值?

【问题讨论】:

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


    【解决方案1】:

    如果没有看到您正在编写的数据,很难确定,但我认为您正在寻找这样的东西:

    ".write": "newData.child('coins').val() == 
               root.child('Users').child($uidOfTheUser).child('coins').val()"
    

    所以这会检查该规则所在路径下coins 中的新数据是否与$uidOfTheUser 用户的当前coins 值相同。 $uidOfTheUser 要么来自此规则所在的路径,要么来自正在写入的数据。再说一遍:如果您向我们展示更多正在编写的实际代码和 JSON,我们可能会提供更好的帮助。

    【讨论】: