繁体   English   中英

每个文档的 Firebase-firestore 安全规则 flutter

[英]Firebase-firestore security rules per document flutter

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.

使用 package paginate_firestore flutter

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 检索到的零文档。 屏幕只是显示正在加载

我认为错误是由状态未设置为 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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM