Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何只允许向实时数据库添加新条目?_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Firebase 如何只允许向实时数据库添加新条目?

Firebase 如何只允许向实时数据库添加新条目?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我有一组联系人(订户): 我现在需要一个安全规则,允许匿名用户添加新条目,但不读取或更新现有条目 我目前使用此规则,但它似乎还允许更新现有条目以及覆盖整个“联系人”集合: { "rules": { "contacts": { ".read": false, ".write": "newData.exists()" } } } 我也试过!data.exists()但这似乎完全限制了写入访问。您当前的规

我有一组联系人(订户):

我现在需要一个安全规则,允许匿名用户添加新条目,但不读取或更新现有条目

我目前使用此规则,但它似乎还允许更新现有条目以及覆盖整个“联系人”集合:

{
    "rules": {
        "contacts": {
            ".read": false,
            ".write": "newData.exists()"
        }
    }
}

我也试过
!data.exists()
但这似乎完全限制了写入访问。

您当前的规则适用于整个联系人节点。因此,如果存在任何数据,您将无法添加任何其他内容

您需要做的是在您的规则中添加一个额外的层,如下所示:

{
    "rules": {
        "contacts": {
            // This is the wildcard that represents the user uid 
            "$user_id": {
              ".read": false,
              ".write": "!data.exists()"
            }
        }
    }
}

另请查看有关的文档。

您当前的规则适用于整个联系人节点。因此,如果存在任何数据,您将无法添加任何其他内容

您需要做的是在您的规则中添加一个额外的层,如下所示:

{
    "rules": {
        "contacts": {
            // This is the wildcard that represents the user uid 
            "$user_id": {
              ".read": false,
              ".write": "!data.exists()"
            }
        }
    }
}

另外,请查看有关的文档。

请包括firebase数据库中的数据结构以及用于编写的代码。我已更新了上面的集合,以实际匹配firebase的json导出。我只通过模拟器进行测试,因为我还没有访问客户端的权限。根据上述规则,对
联系人
联系人/-LHi-8bIG4xaZADdc9mf
的“写入”都会成功或失败。请包括firebase数据库中的数据结构以及您用于写入的代码。我已更新了上述集合,以实际匹配firebase的json导出。我只通过模拟器进行测试,因为我还没有访问客户端的权限。根据上述规则,向
联系人
联系人/-LHi-8bIG4xaZADdc9mf
写入成功或失败。太好了,我明天会尝试,如果客户一切顺利,我会接受你的回答。它不允许我在模拟器中写入
/contacts
。我猜您不能在那里模拟POST请求。@sboesch您必须确保您正在写入正确的位置。有了这些规则,您无法直接写入
/contacts
,您必须更深入地写入一个lvl。实际上,您可以取消读取规则,因为默认值已经为false。太好了,我明天会尝试,如果客户端一切正常,我会接受您的答案。它不允许我在模拟器中写入
/contacts
。我猜您不能在那里模拟POST请求。@sboesch您必须确保您正在写入正确的位置。有了这些规则,您无法直接写入
/contacts
,您必须更深入地写入一个lvl。实际上,您可以取消读取规则,因为默认值已经为false。