gpt4 book ai didi

firebase - 如何使用 Firebase 安全规则验证此数据结构?

转载 作者:行者123 更新时间:2023-12-02 19:29:58 25 4
gpt4 key购买 nike

到目前为止,Firebase 安全规则还没有任何进展。

我有这个

{
"rules": {
"users": {
"$user_id": {
".read": true,
".write": "auth !== null && auth.uid === $user_id",
"profile": {
".validate": "newData.hasChildren(['first_name', 'last_name'])"
}
}
}
}
}

我发送数据和配置文件,其中一个是空白的......它允许它以任何方式写入。我最终得到这样的数据......

{
"users" : {
"simplelogin:25" : {
"profile" : {
"first_name" : "John",
"last_name" : ""
}
},
"simplelogin:26" : {
"profile" : {
"first_name" : "Bob",
"last_name" : ""
}
}
}
}

对于如何使上述规则发挥作用有什么帮助吗?似乎无法让它正确验证。

最佳答案

您的验证规则是:

".validate": "newData.hasChildren(['first_name', 'last_name'])"

因此,如果新数据具有 first_namelast_name 属性,则它是有效的。

您要发送此对象:

"profile" : {
"first_name" : "John",
"last_name" : ""
}

该对象具有 first_namelast_name 属性,因此根据您的规则,它是有效的。

您似乎想要是属性不仅存在,而且是字符串并且具有最小长度。如果这确实是您的要求,您可以将其写入验证规则中:

"profile": {
".validate": "newData.hasChildren(['first_name', 'last_name'])",
"first_name": {
".validate": "newData.isString() && newData.val().length >= 10"
},
"last_name": {
".validate": "newData.isString() && newData.val().length >= 10"
}
}

第一个 .validate 确保配置文件(至少)具有 first_namelast_name 属性。其他 .validate 规则确保它们具有正确的类型和最小长度。

关于firebase - 如何使用 Firebase 安全规则验证此数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com