首页 > 解决方案 > Firebase 实时数据库,安全规则 - 检查其他节点

问题描述

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

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

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

标签: androidfirebasefirebase-realtime-databasefirebase-security

解决方案


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

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

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


推荐阅读