簡體   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