Firebase实时数据库规则(所有人都可以读取,但只能编辑所有者)

烤面包

到目前为止,我一直在使用此规则配置

{
  "rules": {
    "items": {
      ".read" : true,
      "$uid": {
        ".read" : true,
        ".write": "auth != null && auth.uid == $uid"
      }
    }
  }
}

验证和其他目录被省略。/ items / user1 / item1 / items / user2 / item1

所有可以读取项目的目录和所有用户项目(没有私有项目)

我需要什么?

平面项目

"items" : {
     "item1": {},
     "item2": {}
}

以userId作为属性

"item1" : {
    "uid": "userId"
}

只有用户创建的项目可以编辑/删除,但所有人都可以看到。

我在考虑不同目录中的重复项,例如

"public_items": {
         "item1": {},
         "item2": {}
}


"items": {
   "userId": {
      "item1": {},
      "item2": {},
   }
}

但这似乎不是一个好主意。

规则以原子方式应用。这意味着,如果该位置或父位置没有授予访问权限的规则,则读取或写入操作会立即失败。即使可以访问每个受影响的子路径,在父位置的读取也将完全失败。https://firebase.google.com/docs/database/security/securing-data#read_and_write_rules_cascade

如果不能将规则应用于每个项目,如何建立具有不同所有者的项目目录?

阿道夫斯

您只能使用来处理此问题/items/itemId/uid

{
  "rules": {
    "items": {
        ".read" : true,
        "$itemId": {
            ".write": "(!data.exists() && newData.child('uid').val() == auth.uid ) || (data.child('uid').val() == auth.uid && newData.child('uid').val() == auth.uid)"
        }
    }
  }
}

以上规则是一种可能的解决方案。我们允许任何人阅读其中的所有内容items但是只有拥有项目(/itemId/uid)的用户才能创建/编辑。另外,我们强制新的或编辑的项目具有用户ID。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

所有人都可以看到私有类型?

来自分类Dev

SSIS无法访问所有人都可以访问的文件夹

来自分类Dev

Firebase 实时数据库读取所有现有数据

来自分类Dev

如何允许所有人访问mysql数据库?

来自分类Dev

如何允许所有人访问mysql数据库?

来自分类Dev

我可以配置S3存储桶,以便将所有文件上传到S3存储桶,以便默认情况下所有人都可以看到所有页面

来自分类Dev

如何使用SPARQL获取数据库中所有人的昵称和电子邮件?

来自分类Dev

Firebase实时数据库未在Android调试APK版本上返回所有值

来自分类Dev

Firebase实时数据库未在Android调试APK版本上返回所有值

来自分类Dev

如何更改Azure数据库的所有者

来自分类Dev

PostgreSQL数据库的所有者

来自分类Dev

更改雪花数据库所有者

来自分类Dev

删除所有人的讯息

来自分类Dev

所有异步任务都可以读取的变量

来自分类Dev

Azure订阅所有者可以访问其中的Azure数据库吗?

来自分类Dev

如何将所有人(甚至未经身份验证的用户)都可以访问的Azure功能添加到AAD安全的Azure Function应用中

来自分类Dev

所有人都可执行文件,但仍然无法执行?

来自分类Dev

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

来自分类Dev

设置子目录(rx)的全局可浏览权限,但使所有者和组成员以外的所有人都无法访问文件

来自分类Dev

Firebase实时数据库-规则

来自分类Dev

SQL SERVER 具有执行、读取、写入权限的帐户与数据库所有者大致相同吗?

来自分类Dev

如何使用Firebase实时数据库中的键值或字段键删除所有字段和值?

来自分类Dev

如何从实时数据库firebase的单个列表视图中同时获取所有子项的详细信息

来自分类Dev

“捕获所有其他” Firebase数据库规则

来自分类Dev

如果用户查询公共BigQuery数据库,则数据所有者可以查看已执行的查询

来自分类Dev

Laravel socket.io向发送者以外的所有人广播

来自分类Dev

外部磁盘-如何确保所有人都无需root权限即可读取?

来自分类Dev

使用Cloud Functions删除实时数据库中所有出现的UID

来自分类Dev

为什么我的pip安装的Python脚本不能对所有人都可执行?

Related 相关文章

  1. 1

    所有人都可以看到私有类型?

  2. 2

    SSIS无法访问所有人都可以访问的文件夹

  3. 3

    Firebase 实时数据库读取所有现有数据

  4. 4

    如何允许所有人访问mysql数据库?

  5. 5

    如何允许所有人访问mysql数据库?

  6. 6

    我可以配置S3存储桶,以便将所有文件上传到S3存储桶,以便默认情况下所有人都可以看到所有页面

  7. 7

    如何使用SPARQL获取数据库中所有人的昵称和电子邮件?

  8. 8

    Firebase实时数据库未在Android调试APK版本上返回所有值

  9. 9

    Firebase实时数据库未在Android调试APK版本上返回所有值

  10. 10

    如何更改Azure数据库的所有者

  11. 11

    PostgreSQL数据库的所有者

  12. 12

    更改雪花数据库所有者

  13. 13

    删除所有人的讯息

  14. 14

    所有异步任务都可以读取的变量

  15. 15

    Azure订阅所有者可以访问其中的Azure数据库吗?

  16. 16

    如何将所有人(甚至未经身份验证的用户)都可以访问的Azure功能添加到AAD安全的Azure Function应用中

  17. 17

    所有人都可执行文件,但仍然无法执行?

  18. 18

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

  19. 19

    设置子目录(rx)的全局可浏览权限,但使所有者和组成员以外的所有人都无法访问文件

  20. 20

    Firebase实时数据库-规则

  21. 21

    SQL SERVER 具有执行、读取、写入权限的帐户与数据库所有者大致相同吗?

  22. 22

    如何使用Firebase实时数据库中的键值或字段键删除所有字段和值?

  23. 23

    如何从实时数据库firebase的单个列表视图中同时获取所有子项的详细信息

  24. 24

    “捕获所有其他” Firebase数据库规则

  25. 25

    如果用户查询公共BigQuery数据库,则数据所有者可以查看已执行的查询

  26. 26

    Laravel socket.io向发送者以外的所有人广播

  27. 27

    外部磁盘-如何确保所有人都无需root权限即可读取?

  28. 28

    使用Cloud Functions删除实时数据库中所有出现的UID

  29. 29

    为什么我的pip安装的Python脚本不能对所有人都可执行?

热门标签

归档