2016-09-08 13 views
0

オブジェクトのリストのルールは次のとおりです。あなたが認証されていれば、すべてにアクセスできます。そうでない場合、一部のオブジェクトはパブリックであり、一部は(ブールのパブリックプロパティ)ではありません。 $オブジェクトのルールは、オブジェクトに直接アクセスしようとすると問題ありません。Firebaseデータベースのルール:親から子データにアクセスする

"list": { 
    ".read": ???????????? , 
    ".write": "auth != null", 
    "$object": { 
    ".read": "auth != null || data.child('public').val() === true", 
    ".write": "auth != null" 
    } 
} 

ただし、認証されていない場合は、公開オブジェクトのみを一覧表示するルールも必要です。親リストの中に生成された$キーのプロパティの読み込みルールを設定するにはどうすればよいですか?あなたから.read

によるフィルタリングを行うことはできません

"list":{ 
    ".read": "auth != null || data.child('$key').child('public').val() === true" 
} 
+0

マシューは以下のように説明していますが、http://stackoverflow.com/a/14298525/209103も参照してください。 –

答えて

3

:何かhttps://firebase.google.com/docs/database/security/securing-data

ルールは

規則は、原子的に適用されるフィルタはありません。つまり、その場所にルール がない場合、またはアクセスを許可する親ロケーションにルールがない場合、読み取りまたは書き込みの 操作はすぐに失敗します。影響を受けるすべての 子パスがアクセス可能な場合でも、親ロケーションでの読み取りは完全に失敗します 。

+0

ええ、私はそれを読んだ。だから私は子供から親に.read条件を渡そうとしている。しかし、オブジェクトのリストを表示するときに、ユーザが見ることができる、または見えないことをサーバ側でフィルタリングする方法が必要です。私が間違っている? – cerealex

+1

いいえ、それはまさにこれが言っていることです。ユーザーがフィルタリングしたい場合は、ユーザーが別の場所に保存する必要があります。 –

+0

したがって、認証関係がない場合は、リスト全体を表示するか、何も表示しないかのどちらかしか選択できません。 – cerealex

関連する問題