【问题标题】:Firebase-firestore security rules per document flutter每个文档颤动的 Firebase-firestore 安全规则
【发布时间】:2021-10-25 21:55:37
【问题描述】:

Firebase-Firestore 拒绝所有请求,而不是拒绝不符合数据的特定文档 Firebase-Firestore 安全规则

allow read: if authenticated() && resource.data.status == true || author(resource.data.creatorid) || admin();

我想要实现的只是 status = true 文档会出现

错误

Unhandled Exception: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.

使用包 paginate_firestore 颤振

PaginateFirestore(
  itemsPerPage: 5,
  key: key,
  shrinkWrap: true,
  physics: ClampingScrollPhysics(),
  itemBuilderType: PaginateBuilderType.listView,
  itemBuilder: (index, context, documentSnapshot) {
    final data = documentSnapshot.data() as Map?;
    return MainComponent(
      data: data,
    );
  },
  query:
      FirebaseFirestore.instance.collection('members').orderBy('title'),
  isLive: false,
);

从 Firestore 中检索到零个文档。屏幕只是显示加载

【问题讨论】:

    标签: firebase flutter google-cloud-firestore firebase-security


    【解决方案1】:

    我认为状态未设置为 true 的文档会引发错误。尝试在查询中添加 where 子句,以获取状态为 true 的文档。

    query:
          FirebaseFirestore.instance.collection('members').where("status", isEqualTo: true).orderBy('title')
    

    在向作者展示他们自己的请求时,您可以添加一个 where 来检查作者 ID 是否等于当前登录用户的 ID。

    query:
          FirebaseFirestore.instance.collection('members').where("authorId", isEqualTo: "currentUserId").orderBy('title')
    

    还可以尝试将条件用逻辑或括号括起来:

    allow read: if authenticated() && (resource.data.status == true || author(resource.data.creatorid) || admin());
    

    【讨论】:

    猜你喜欢
    • 2020-06-19
    • 2020-07-04
    • 1970-01-01
    • 2018-09-26
    • 2019-03-03
    • 2021-04-09
    • 1970-01-01
    • 2020-02-13
    • 2019-02-01
    相关资源
    最近更新 更多