我不知道為什么我的安全規則不起作用。如果有人能在這里找到問題,那將非常有幫助。
我希望在聊天中發送訊息的用戶是唯一能夠編輯或洗掉它的人。并且blocked array聊天檔案中的用戶無法發送任何訊息。
這就是我所做的:
match /{document=**}{
allow read, write : if false;
}
match /Chats/{ChatID}{
allow read, write : if request.auth != null;
}
match /Chats/{ChatID}/Messages/{MessageID} {
allow delete : if false;
allow read: if request.auth != null;
}
match /Chats/{ChatID}/Messages/{MessageID}{
allow delete, update : if resource.data.sender == request.auth.uid;
allow create : if !(request.auth.uid in get(/databases/$(database)/documents/Chats/$(ChatID)).data.blocked);
}
他們兩個似乎都不起作用。任何人都可以洗掉該訊息,而且用戶永遠無法發送該訊息,無論它的 uid 是否存在于 blockList 中。
更新:
這是我要洗掉的檔案。
這是我用來洗掉檔案的代碼:
FirebaseFirestore.getInstance().collection("Chats").document(CHAT_ID).collection("Messages").document(MSG_ID).delete();
uj5u.com熱心網友回復:
您無法創建訊息的原因是:
allow create : if !(request.auth.uid in get(/databases/$(database)/documents/Chats/$(ChatID)).data.blocked);
請改成這樣:
allow create: if (request.auth.uid in get(/databases/$(database)/documents/Chats/$(ChatID)).data.blocked) == false;
任何人都可以洗掉的原因是:
allow delete, update : if resource.data.sender == request.auth.uid;
請改成這樣:
allow delete, update : if (resource.data.sender == request.auth.uid);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351473.html
