![](/img/trans.png)
[英]Firestore security rules: check a condition for every value in an array
[英]Firestore rules : check the existence of a value in array
我想只給members組里的用戶讀寫權限,不知道為什么不行?
這是 firestore 中的規則:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{uid} {
allow write: if request.auth != null && request.auth.uid == uid;
allow read : if request.auth != null;
}
match /GroupChat/{document=**} {
allow read,create,update: if request.auth != null && request.auth.uid in request.resource.data.Members;
}
}
}
查詢:
FirebaseFirestore.instance
.collection("GroupChat")
.where("Members",
arrayContains: FirebaseAuth.instance.currentUser!.uid)
.snapshots(),
當我想在我的APP中顯示信息時,我得到這個錯誤:
W/Firestore(14600):(24.0.0)[Firestore]:偵聽查詢(target=Query(GroupChat,其中成員 array_contains 0FQhApDgWMVNTpOiDewF3qJX7IA3 按名稱排序);limitType=LIMIT_TO_FIRST)失敗:狀態{code=PERMISSION_DENIED,描述=丟失或權限不足。, cause=null}
如文檔中所述,
resource
變量指的是請求的文檔,resource.data
是文檔中存儲的所有字段和值的 map。
但是, request.resource.data
包含在更新/寫入操作中添加到文檔中的數據。 你應該使用resource.data
因為你想檢查現有數據。
match /GroupChat/{document=**} {
allow read,create,update: if request.auth != null && request.auth.uid in resource.data.Members;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.