【问题标题】:firebase rule validate all value in the newData (unknown key validation)firebase 规则验证 newData 中的所有值(未知键验证)
【发布时间】:2017-04-23 15:25:28
【问题描述】:

有没有办法编写 firebase 规则来验证“newData”对象中的所有值?

在我的应用程序中,“newData”对象中任何键的值都非常灵活(我的键是不可预测的,用户可以设置自己的键和值)但是,我并不关心用户给我的值是什么每个键,但我想立即将数据长度限制为 100 个字符。

所以我会验证“newData”中任何键中的所有值,无论它们在 firebase 数据库安全规则中是否限制为 100 个字符。

我的应用程序的当前阶段: 这是我的应用程序的工作方式.. 基本上,我的应用程序有一个个人资料页面。用户可以在我现有的字段中输入值。用户还可以添加自己的自定义字段并保存。它们都将变成字符串。添加不管他们添加了多少自定义字段。我只需要限制字符串的长度。

如果这是进行灵活的键值类型应用程序的不好方法,请建议我采取其他方式。

这是用户新数据: { 名称:“ABC”, 年龄:“30”, xxx:“yyy” } xxx 可以是任何东西(xxx 是可选的,用户可以创建其他客户字段,例如 aaa、bbb 或 ccc。)

这是 JSON 安全性:

{
  "rules": {
  ".read": false,
  ".write": false,
  "user": {
    "$uid": {
      ".read": true,
      ".write": "auth.uid === $uid"
  }
}

谢谢。

【问题讨论】:

  • 不要描述你的数据结构和规则,而是发布实际的 JSON(作为文本,没有截图)和规则。您可以通过单击 Firebase Database console 中的“导出 JSON”链接来获取此 JSON。
  • 啊...我认为您正在寻找$ 变量,如下所述:firebase.google.com/docs/database/security/…
  • @FrankvanPuffelen 您好,感谢您如此迅速地回复我正在编辑我的帖子以放置 JSON 规则。 JSON 规则非常简单。
  • @FrankvanPuffelen 是的,这就是你给我的链接 +1 的答案。 "user": { "$uid": { ".read": true, ".write": "auth.uid === $uid", "$other": { ".validate": //checklenght } }

标签: firebase firebase-realtime-database firebase-security


【解决方案1】:

使用通配符验证此处所述的未知密钥的所有数据,由 Frank van Puffelen 回答

https://firebase.google.com/docs/database/security/securing-data#using_variables_to_capture_path_segments

"$unknownKey": { ".validate": "$unknownKey.length

{
  "rules": {
  ".read": false,
  ".write": false,
  "user": {
    "$uid": {
      ".read": true,
      ".write": "auth.uid === $uid",
      "$unknownKey": { ".validate": "$unknownKey.length < 100"}
    }
  }
}

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多