关于 firebase 实时数据库中的子级规则和客户端可读性的问题

A. 新手

鉴于实时数据库中“聊天”节点的规则:

"chats": {
  "$chatUID": {
    "$messageUID": {
      ".validate": "newData.hasChildren(['message', 'date', 'from', 'to'])",
      ".write": "auth.uid != null", // unauthorized users should not be able to even try to send data here
      ".read": "data.child('from').val() === auth.uid || data.child('to').val() === auth.uid",
      "from": {
        ".validate": "newData.val() === auth.uid"
      },
      "to": {
        ".validate": "root.child('friends/' + newData.val() + '/' + auth.uid).exists()"
      },
      "message": {
        ".validate": "newData.isString() && newData.val().length > 0 && newData.val().length < 256"
      },
      "date": {
        ".validate": "newData.val() == now" // ServerValue.TIMESTAMP
      },
      "$other": {
        ".validate": false
      }
    }
  }
} // chats

客户可以检索 $chatUID 上的数据,按日期对孩子进行排序吗?目前 $chatUID 没有读取规则,恐怕即使我会完成对 $messageUID 的读取要求,除非我知道特定的 $messageUID,否则我将无法从 $chatUID 获取任何数据。这是正确的还是我仍然可以在 $chatUID 上使用客户端查询给定规则?

弗兰克·范·普费伦

我想您是在问您的规则是否允许此查询:

var ref = firebase.database().ref("chats").child(firebase.auth().currentUser.uid);
ref.orderByChild("date").once("value", ...

在这种情况下,Firebase 数据库服务器所做的是检查用户是否有权读取/chats/$uid. 由于那里没有人具有读取权限,因此拒绝侦听器。

许多不熟悉 Firebase 的开发人员希望安全规则能够主动过滤数据,但这并不是他们的工作方式。他们所做的只是检查是否允许整个操作,一旦您附加了侦听器,他们就会这样做。换句话说:安全规则不能用于过滤数据

然而,从大约一年前开始,您可以使用安全规则来验证某些类型的过滤器例如,您可以只允许读取过滤数据的from.

因此,例如这些规则/chats/$uid

".read": "auth.uid != null &&
        query.orderByChild == 'from' &&
        query.equalTo == auth.uid"

将允许此查询:

ref.orderByChild("from").equalTo(firebase.auth().currentUser.uid).once("value", ...

虽然它会拒绝

ref.once("value", ...

这意味着您可以允许某些查询,同时拒绝其他读取。但是,我认为根据您的fromto属性的需要,不可能需要多个子句

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

来自分类Dev

客户端和Firebase实时数据库之间的数据加密

来自分类Dev

关于扩展Firebase后端的问题

来自分类Dev

关于在 Firebase 中存储数据的方法的建议

来自分类Dev

Firebase数据库Kotlin,关于其连接

来自分类Dev

Firebase实时数据库-规则

来自分类Dev

Firebase 实时数据库的问题

来自分类Dev

客户端互联网连接变慢时,Firebase实时数据库逻辑失败

来自分类Dev

关于Firebase startAt()的困惑

来自分类Dev

关于 Firebase 关于静态页面和动态页面的一些混淆

来自分类Dev

Flutter:关于检索 Firebase 用户 ID 的异步函数的问题

来自分类Dev

我需要关于在 firebase 中创建的聊天系统的报告

来自分类Dev

我如何从Firebase实时数据库中获取属于随机密钥的子级的数据-使用react native?

来自分类Dev

Firebase索引关于安全性和规则不起作用

来自分类Dev

Firebase实时数据库规则拒绝权限

来自分类Dev

创建/更新/删除 Firebase 实时数据库规则

来自分类Dev

Firebase 实时数据库规则。获取 url 中没有 @uid 的规则

来自分类Dev

我的Firebase实时数据库安全规则出现问题

来自分类Dev

Firebase实时数据库规则模拟器中的空数据

来自分类Dev

关于 firebase/cloud firestore 的困惑

来自分类Dev

在SwiftUI中读取带有子节点的Firebase实时数据库父节点时出现问题

来自分类Dev

Firebase 实时数据库 fcm 消息发送问题

来自分类Dev

Firebase 实时数据库:发布查询问题

来自分类Dev

在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

来自分类Dev

Firebase 实时数据库中需要安全规则吗?

来自分类Dev

您可以控制 firebase 实时数据库安全规则中的各个属性吗?

来自分类Dev

仅在 firebase 实时数据库中的一个节点上禁用读取规则

来自分类Dev

如何在firebase auth和firebase-实时数据库中获得相同的ID?

来自分类Dev

如何从Firebase中的实时数据库获取数据

Related 相关文章

  1. 1

    Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

  2. 2

    客户端和Firebase实时数据库之间的数据加密

  3. 3

    关于扩展Firebase后端的问题

  4. 4

    关于在 Firebase 中存储数据的方法的建议

  5. 5

    Firebase数据库Kotlin,关于其连接

  6. 6

    Firebase实时数据库-规则

  7. 7

    Firebase 实时数据库的问题

  8. 8

    客户端互联网连接变慢时,Firebase实时数据库逻辑失败

  9. 9

    关于Firebase startAt()的困惑

  10. 10

    关于 Firebase 关于静态页面和动态页面的一些混淆

  11. 11

    Flutter:关于检索 Firebase 用户 ID 的异步函数的问题

  12. 12

    我需要关于在 firebase 中创建的聊天系统的报告

  13. 13

    我如何从Firebase实时数据库中获取属于随机密钥的子级的数据-使用react native?

  14. 14

    Firebase索引关于安全性和规则不起作用

  15. 15

    Firebase实时数据库规则拒绝权限

  16. 16

    创建/更新/删除 Firebase 实时数据库规则

  17. 17

    Firebase 实时数据库规则。获取 url 中没有 @uid 的规则

  18. 18

    我的Firebase实时数据库安全规则出现问题

  19. 19

    Firebase实时数据库规则模拟器中的空数据

  20. 20

    关于 firebase/cloud firestore 的困惑

  21. 21

    在SwiftUI中读取带有子节点的Firebase实时数据库父节点时出现问题

  22. 22

    Firebase 实时数据库 fcm 消息发送问题

  23. 23

    Firebase 实时数据库:发布查询问题

  24. 24

    在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

  25. 25

    Firebase 实时数据库中需要安全规则吗?

  26. 26

    您可以控制 firebase 实时数据库安全规则中的各个属性吗?

  27. 27

    仅在 firebase 实时数据库中的一个节点上禁用读取规则

  28. 28

    如何在firebase auth和firebase-实时数据库中获得相同的ID?

  29. 29

    如何从Firebase中的实时数据库获取数据

热门标签

归档