firebaseのクラウドファイアストアのルールを作成していますが、ユーザーの認証IDを使用してデータベースへのアクセスを制限したいと考えています。ルールと認証を使用してクラウドfirestoreデータベースにプライベート化
だから、私のデータベース構造はこのようなものです:
/ユーザー/ {userIdを} /グループ/ {groupIdを}
と私は、ユーザーだけが唯一、自分のしてドキュメントにアクセスできるようにしたいですユーザーID。これを実現するために
は、私は次のようなルール記述:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if userId == request.auth.uid;
}
}
}
しかし、これでは、私のユーザーは、データベースから自分の「グループ」を読み取ることができませんでした。
私はJavaScriptを使用していて、「グループ」を取得するためのコードは以下の通りです:クラウドfirestoreがリアルタイムデータベースのような素敵なデバッグツールを持っていないので、私は私にはほとんどのデバッグをした
console.log("uid: ", uid)
db.collection("users/" + uid + "/groups")
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.data())
})
})
今自分の。
私は「5lS2NA21UgbabEw4AkyWyef9FH42」のUIDを持つテストユーザーを持っているので、私はこのようなルールを変更:これにより
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if "5lS2NA21UgbabEw4AkyWyef9FH42" == request.auth.uid;
}
}
}
、私のテストユーザーは(成功した彼の文書から「グループ」のデータを取得することができましたもちろん他のすべてのユーザーはできませんが)。
は今、私はこれにルール変更:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if "5lS2NA21UgbabEw4AkyWyef9FH42" == userId;
}
}
}
をそして今、私は、データベースからデータを取得することができませんでした。
私が間違っていることを誰かに教えてもらえますか?