为什么不从.在从Firebase中删除数据时运行安全规则?

 手机用户2502895987 发布于 2023-01-18 14:32

当我从Firebase删除数据时,我的.validate规则似乎没有被执行.这是一个错误还是故意行为?

1 个回答
  • 通常,.validate规则用于定义数据存在时的外观. 删除数据时故意不运行它们.您应该使用.write规则来决定是否应该允许写入(或删除).

    例如,考虑这些用于保护简单聊天室的规则,用户可以在其中创建新的聊天室,但只删除他们所属的聊天室:

    {
      "rules": {
        ".read": true,
        "$room": {
          ".write": "auth != null && (
                       (!data.exists() && newData.child('owner').val() == auth.uid) ||
                       (!newData.exists() && data.child('owner').val() == auth.uid))",
          ".validate": "newData.hasChildren(['owner', 'name'])",
          "name": {
            ".validate": "newData.val().length > 10"
          },
          "messages": {
            ".write": "auth != null"
          }
        }
      }
    }
    

    .write规则用于决定用户是否有权创建/删除聊天室,而.validate规则用于定义聊天室应该是什么样子(如果存在).

    如果在删除时运行.validate规则,则永远不能删除聊天室(因为两个.validate规则都会失败).因此决定不对删除运行.validate规则.

    2023-01-18 14:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有