2017-02-25 8 views
0

セキュリティルールを書き込もうとしていますが、書き込む際に混乱します。私の場合、私はFirebaseを使ってユーザーを認証していませんが、ユーザー名で名前が付けられた子を持つデータベースにノードがあります。私はこのようなロジックを達成しようとしています。値が真であれば、このノードのどの子に対しても、彼はさらに進んでいくことができます。ここに私のサンプルノードはauth変数を使用せずに読み込みを許可するセキュリティルールを書き込む方法

"Customers":{ 
    "John":"true", 
    "Jack":"false" 
    } 

    "Messages":{ 
    "Message1":{ 
    .... 
    }, 
    }, 

されており、ここで私はconfused.Iは「$」ワイルドカード変数を使用しますが、変数が不明であるというエラーを取得しようとしているよ、私のルールノードです。

"rules":{ 
    "Messages":{ 
    ".read":"root.child('Customers').child($name).val()===true", 
    ".write":"root.child('Customers').child($name).val()===true" 
    } 
    } 

"$"変数はこのように使用できないと思います。だから私はこれをどうすればいいのですか?

答えて

1

どのユーザーに値を確認するかはどのように決定しますか?比較のための値が必要です。ユーザーが自分のメッセージを見ることができるようなロジックを必要とする場合は、メッセージノードの下にUsernameフィールドを追加する必要があります。好き。

"Messages":{ 
    "Message1":{ 
     "John": { 
     }, 
    .... 
    }, 
    } 

このフィールドでこれを行うことができます。

"rules":{ 
    "Messages":{ 
     "$userId" : { 
     ".read":"root.child('Customers').child($userId).val()===true", 
     ".write":"root.child('Customers').child($userId).val()===true" 
     } 
    } 
    }