Firebase 实时数据库,安全规则 - 检查其他节点

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Firebase 实时数据库,安全规则 - 检查其他节点的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 实时规则如何检查具有 AutoID 的节点是不是包含正确的数据

Firebase 电子邮件说我的实时数据库有不安全的规则

我们如何为 Firebase 存储编写依赖于 Firebase 实时数据库中的值的安全规则? [复制]

Firebase 实时数据库安全规则允许更新但未设置

Firebase 实时电话数据库安全规则

使用实时数据库 Firebase 时如何使我的数据库安全?