Firebase规则,仅访问自己的数据,公共数据或特定数据

delueg

我想通过firebase规则和firebase查询实现以下目标。(我正在使用firestore和vuejs)

前提条件:在任何情况下都必须对用户进行身份验证登录

  1. 允许用户read/write自己创建所有数据条目
  2. 允许用户使用将read字段(在我的情况下"visibility")设置为的所有数据"public"
  3. id即使条目的"visibility"字段设置为不相等"public"(例如"private"),也允许用户读取具有条目的特定条目。

假设这是我收藏的条目

从用户A创建的第一个条目,从用户B创建的第二个条目,从用户C创建的第三个条目:

所以:

  1. 应允许用户Bread/write进入第二个条目(对于其他用户,依此类推)
  2. 应该允许用户A,B,Cread进入第一和第三项。
  3. 如果用户A,Cread通过直接document-id查询知道Firebase文档的ID ,则应允许他们进入第二个条目。喜欢db.collection('my_collection').doc('abcxyz').get()

第二个问题是:我是否甚至需要该字段"user_id"能够根据用户创建的文档过滤请求?还是firebase具有内置功能基于(身份验证)检索自创建文档?

[
  {
    "user_id": "the User-A's firebase id",
    "foo": "foo",
    "bar": true,
    "visibility": "public"
  },
  {
    "user_id": "the User-B's firebase id",
    "foo": "foo",
    "bar": true,
    "visibility": "private"
  },
  {
    "user_id": "the User-C's firebase id",
    "foo": "foo",
    "bar": true,
    "visibility": "public"
  }
]

有人可以帮助我创建规则和请求吗?(我正在使用此npm

这是我现在要检索自己创建的条目的查询

this.db.collection("my_collection").where('user_uid','==',this.$store.state.user.id).get().then((querySnapshot) => {
      querySnapshot.forEach((doc) => {
        //do something 
      });
    });

这是为了创造

db.collection("my_collection").add({
    user_uid: this.$store.state.user.id,
    foo: this.foo,
    bar: this.bar,
    visibilty: this.visibility
  })

这是我到目前为止的规则

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}
弗兰克·范普菲伦

Firestore不会自动将文档与导致其创建的用户相关联。如果需要此类元数据,则需要像现在一样将其存储在每个文档中。

为了确保用户只能阅读自己的文档,您需要做两件事:

  1. 仅尝试读取那些文档的查询。您已经有这个,所以☑。
  2. 允许查询但拒绝更广泛读取的规则。
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null && request.auth.uid == resource.data. user_uid;
    }
  }
}

有关更多信息,请参阅有关安全查询数据的文档


要允许其他用例,您将需要扩展规则以也以类似方式允许该访问。但是您需要针对每种情况执行单独的查询,因为Firestore查询不能在多个字段上包含OR类型条件,而这正是您的用例所需要的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从JSON数据访问特定数据(Python)

来自分类Dev

Firebase安全规则:公共数据与私有数据

来自分类Dev

访问Json上的特定数据-NodeJS

来自分类Dev

从JSON数组访问特定数据

来自分类Dev

特定用户的 Firebase 数据库规则

来自分类Dev

如何从 Firebase 中获取特定数据

来自分类Dev

如何从firebase中删除特定数据

来自分类Dev

从访问数据库获取特定数据

来自分类Dev

仅允许少数设备根据自定义规则访问 Firebase 中的数据

来自分类Dev

如何设置用户仅编辑和访问特定数据库表?

来自分类Dev

从Firebase实时数据库读取特定数据

来自分类Dev

从 firebase 加载、过滤数据并显示特定数据

来自分类Dev

从 Firebase 数据检查和比较应用中的特定数据

来自分类Dev

Firebase安全和规则,如何让用户删除自己的数据?

来自分类Dev

我如何让特定用户只允许他们访问mongodb和nodejs中自己的特定数据

来自分类Dev

特定数据总数

来自分类Dev

GCM intent.getExtras-如何仅显示特定数据?

来自分类Dev

仅允许特定数据库的外部PostgreSQL连接

来自分类Dev

JSON 转储仅回显特定数据

来自分类Dev

在Firebase Realtime数据库规则集中访问对象属性

来自分类Dev

斯威夫特:如何从数组内的结构访问特定数据?

来自分类Dev

如何访问highchart工具提示中的任何特定数据?

来自分类Dev

我可以访问功能的特定数据吗?

来自分类Dev

如何在javascript中访问json中的特定数据

来自分类Dev

MAC OS应用程序特定数据的存储位置(仅应用程序而非用户可访问)?

来自分类Dev

数据更改后如何从Firebase实时数据库中检索特定数据

来自分类Dev

如何使用特定数据从 Firebase 数据库中检索数据

来自分类Dev

在React Native中使用if语句从Firebase接收特定数据

来自分类Dev

是否可以在Firebase上加载特定数量的数据?

Related 相关文章

  1. 1

    从JSON数据访问特定数据(Python)

  2. 2

    Firebase安全规则:公共数据与私有数据

  3. 3

    访问Json上的特定数据-NodeJS

  4. 4

    从JSON数组访问特定数据

  5. 5

    特定用户的 Firebase 数据库规则

  6. 6

    如何从 Firebase 中获取特定数据

  7. 7

    如何从firebase中删除特定数据

  8. 8

    从访问数据库获取特定数据

  9. 9

    仅允许少数设备根据自定义规则访问 Firebase 中的数据

  10. 10

    如何设置用户仅编辑和访问特定数据库表?

  11. 11

    从Firebase实时数据库读取特定数据

  12. 12

    从 firebase 加载、过滤数据并显示特定数据

  13. 13

    从 Firebase 数据检查和比较应用中的特定数据

  14. 14

    Firebase安全和规则,如何让用户删除自己的数据?

  15. 15

    我如何让特定用户只允许他们访问mongodb和nodejs中自己的特定数据

  16. 16

    特定数据总数

  17. 17

    GCM intent.getExtras-如何仅显示特定数据?

  18. 18

    仅允许特定数据库的外部PostgreSQL连接

  19. 19

    JSON 转储仅回显特定数据

  20. 20

    在Firebase Realtime数据库规则集中访问对象属性

  21. 21

    斯威夫特:如何从数组内的结构访问特定数据?

  22. 22

    如何访问highchart工具提示中的任何特定数据?

  23. 23

    我可以访问功能的特定数据吗?

  24. 24

    如何在javascript中访问json中的特定数据

  25. 25

    MAC OS应用程序特定数据的存储位置(仅应用程序而非用户可访问)?

  26. 26

    数据更改后如何从Firebase实时数据库中检索特定数据

  27. 27

    如何使用特定数据从 Firebase 数据库中检索数据

  28. 28

    在React Native中使用if语句从Firebase接收特定数据

  29. 29

    是否可以在Firebase上加载特定数量的数据?

热门标签

归档