如何使用 Firebase 安全规则验证此数据结构?
How to validate this data structure with Firebase security rules?
到目前为止,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_name
和 last_name
属性,则新数据有效。
您正在发送此对象:
"profile" : {
"first_name" : "John",
"last_name" : ""
}
此对象有一个 first_name
和一个 last_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_name
和 last_name
属性。其他 .validate
规则确保它们具有正确的类型和最小长度。
到目前为止,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_name
和 last_name
属性,则新数据有效。
您正在发送此对象:
"profile" : {
"first_name" : "John",
"last_name" : ""
}
此对象有一个 first_name
和一个 last_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_name
和 last_name
属性。其他 .validate
规则确保它们具有正确的类型和最小长度。