2017-01-25 10 views
0

私のデータベースには以下の構造とルールがありますが、私の目標はサインアップがなくてもchild()関数によって子の名前を取得できないようにすることです。私の言うことは、子供の名前を知っている人は誰でも書くことが許されていますが、私の問題は誰もが子供の機能によって子供の名前を見ることができたということです。Firebase:セキュリティルールを持つ子関数をブロックする

ルール:

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

構造:禁断の

{ 
    "collaborate" : { 
    "xwkmM76Irf" : { 
     "css" : "", 
     "html" : "", 
     "js" : "" 
    } 
    } 
} 

firebase.database().ref('collaborate').once(
    'value', 
    function($snapshot){ 
     ... 
    } 
); 

firebase.database().ref('collaborate/'+$id).once(
    'value', 
    function($snapshot){ 
     ... 
    } 
); 
firebase.database().ref('collaborate/'+$id).set({ 
... 
}); 

のおかげ

+2

JSON構造の描写を表示する代わりに、実際のJSONの代表的なスニペットをテキストとして表示します(スクリーンショットなし)。これは、Firebaseデータベースコンソールの[JSONエクスポート]リンクをクリックすると表示されます。 –

+0

@FrankvanPuffelenそれはあなたのセキュリティルールについて助けにはなりません... – howtoweb

+0

共有したJSONを使って、許可したい操作と許可しない操作のコードを与えることができます?私はあなたの目標や問題が何であるかについてはっきりしていないので、ここで[MCVE](http://stackoverflow.com/help/mcve)に行きたいと思っています。 –

答えて

2

あなたは$変数を使用して子ノードに読んで許可することができます。$で始まる

{ 
    "rules": { 
    "collaborate": { 
     "$collaborateId": { 
     ".read": true, 
     ".write": true 
     } 
    } 
    } 
} 

ルールはその場所にそれぞれの子ノードに適用されます。

上記のルールでは、既存の子ノードをすべて読み取ることができます(ただし、/collaborateでリッスンして子ノードのリストを取得することはできません)。そして、新しい子ノードを書く(または既存のものを一度に1つずつ上書きする)ことができます。

関連する問題