セキュリティルールのシンプルで一般的な使用例ですが、動作させることはできません。 私はFirestore(ないRTDB)に文書orgs/fooOrg
を持っており、それがオブジェクトマップされたキーに基づいてアクセスを許可する
{
"members": {
"fooUser": true
}
}
が含まれており、適用されるルールは、私がorgs
コレクション内のすべての文書のことができるようにすべきである期待
service cloud.firestore {
match /databases/{database}/documents {
match /orgs/{orgId} {
allow read: if "fooUser" in resource.data.members;
}
}
}
です読まれる;ただし、サーバは(v4.5.0およびV4.5.1を使用して)、ブラウザ上で
firebase.firestore().doc('orgs/fooOrg').get()
を実行した結果としてError: Missing or insufficient permissions
を言います。偶数
allow read: if resource.data.members["fooUser"] == true;
も失敗します。何が悪かったのか?
私の理解では、これは私がそれは一週間前のように働いてだったと信じて、この文書 https://firebase.google.com/docs/firestore/security/secure-data#evaluating_documents_currently_in_the_database
に従って動作するはずです。すべての突然、私の作業コードがエラーを生成し始めたので、私はこのMCVEを書いて、いくつかの異なるプロジェクトをテストしました。
はまた、私は以下の同様の問題を発見したが、それらとは少し異なり、それは同じ理由(Firestore上のバグ)
Firestore security rules based on map values だ場合はそれほどわからない(私の場合、簡単な文書が失敗しても取得)
Firestore read rules with self condition は、(この場合は、マップの値を使用しています。私の場合、キーが使用されている)