私はuid
のメッセージがのto
フィールドまたはfrom
フィールドのいずれかと等しいか、またはメッセージの 'to'セクションがall
に設定されている場合にのみ読むようにします。私はいくつかのルールをしようとすると、あまりにもFirebaseドキュメントを読んでメッセージを読むためにどのFirebaseセキュリティルールを使うべきですか?
{
"intents" : {
"intentFields" : "",
"intentName" : "",
"to" : ""
},
"messages" : {
"-KViVgc7ZG051eMXP0-5" : {
"from" : "Ed",
"name" : "Ed",
"photoUrl" : "https://cdn1.iconfinder.com/data/icons/user-pictures/100/male3-512.png",
"text" : "Hello, I'm Ed",
"timeStamp" : "1476880306",
"to" : "all",
"type" : "text"
},
"-KWmsuvm0uJIf01eHfyN" : {
"from" : "Capyv3mxQsUUn2W1nPOgcJ0Ex9T2",
"name" : "Aakash Bansal",
"photoUrl" : "https://lh5.googleusercontent.com/-oQyA4HXVycc/AAAAAAAAAAI/AAAAAAAAHKo/Ov0A0p0LjiY/s96-c/photo.jpg",
"text" : "ho",
"timeStamp" : "1479396273",
"to" : "Ed",
"type" : "text"
}
}
}
:
これは私のデータベースです。しかし、私の結果を達成するのに役立つルールはありませんでした。
私が試したルールの例は次のとおりです。彼らは私の所望の結果を達成していないが、それらはアプリ内のすべてのメッセージを表示するものの、ルールの次のセットは、正常に動作します一方
{
"rules": {
"intents" : {
".read" : "auth.uid === data.child('to').val()",
".write" : true
},
"messages" : {
"$message": {
".read": "auth.uid !== null",
".write": true
}
}
}
}
。
{
"rules": {
"intents" : {
".read" : "auth.uid === data.child('to').val()",
".write" : true
},
"messages" : {
".read": "auth.uid !== null",
"$message": {
".write": true
}
}
}
}
だけ通知する、私はデータを読み取るためのAndroidアプリでfirebaseui使用しています。私が「火災の安全ルール」を理解していないと何かが間違っているかどうか教えてください。
EDIT:でも、ルールの次のセットが機能していない:
{
"rules": {
"intents" : {
".read" : "auth.uid === data.child('to').val()",
".write" : true
},
"messages": {
"$message": {
".read" : true,
".write": true
}
}
}
}
私はデータを読み取るために使用するアンドロイドのコードは次のとおりです。
あるどのよう
mFirebaseAdapter = new MessageAdapter(FriendlyMessage.class,
R.layout.message_my,
RecyclerView.ViewHolder.class,
mFirebaseDatabaseReference.child("/messages"));
あなたは*メッセージを読む*? '/ messages'を読み込もうとしているなら、実際にはこれらのルールで失敗するでしょうから。これは一般的な混乱の原因です。ドキュメントでは[フィルタはルールではありません](https://firebase.google.com/docs/database/security/security-data#rules_are_not_filters)として説明していますが、[こちらの回答はこちら](http://stackoverflow.com/a/14298525/209103)。 –
あなたのコードはどこですか?何を実際に読んでいるのですか? (ヒント:上のPufのコメントはほぼ確実ですが、コードなしではわかりません) – Kato
はい、私はfirebaserecycleradapterを/ messagesに配置しました。 –