2016-07-14 5 views
0

Firebaseのセキュリティルールを機能させるためにいくつかの問題があります。私は一定の否定を得ています。 私は私が仕事をしたい、そして私がやっていることをどのようにしたいのか説明しようとしている間、私と一緒に裸でいます。Firebaseセキュリティルールの問題

Structure of the database これは理想的な構造です。データを読みやすくするため。特定のモデルが存在しない場合。ユーザーは、その自動車のセクションを作成してそこに投稿することができます。しかし、別のユーザーが同じ車種のために投稿したいとき。彼は投稿のリストに追加するだけです。

{ 
    "rules":{ 
     ".read":"auth != null", 
     "Cars":{ 
     "$anyCar":{ 
      "$postName":{ 
       ".write":"auth != null", 
       ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid" 
      } 
     } 
     } 
    } 
} 

これは、このデータベースのルールを実装した方法です。

{ 
    "Volvo":{ 
     "-KM_nqDpB78ZM0SE485F":{ 
     "color":"-10053121", 
     "comments":0, 
     "date":10, 
     "id":1231, 
     "uid":"45738372-3b72-4328-aa99-a00c05482973", 
     "rating":0, 
     "topic":"Volvo is a safe car", 
     "user":"Brahim" 
     } 
    } 
} 

これは私がシミュレータで試しているjsonです。 私はシミュレータを使用しているときに私は認証されており、私は場所/Carsに対して試しています。

答えて

3

は、セキュリティルールによると、あなたはポストへの書き込みを許可されますが、作成されていないあなたは$anycarノードでの書き込みアクセスを許可する必要があり1

"$postName":{ 
    ".write":"auth != null", 
    ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid" 
     } 

新しい、おそらく唯一のことを許可します投稿を編集する特定のユーザー

{ 
    "rules":{ 
     ".read":"auth != null", 
     "Cars":{ 
     "$anyCar":{ 
      ".write":"auth != null", 
      "$postName":{ 
      ".write": "auth.uid == newData.child('uid').val()" 
      ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString()" 
      } 
     } 
     } 
    } 
    } 
関連する問題