2016-05-19 3 views
2

私はfirebaseデータベースのセキュリティルールに本当に苦労しています。Firebaseデータベースセキュリティルール

私は誰でも読むことができますが、レコードを作成したユーザーだけが編集または削除できるレコードのリストを管理できるシンプルなアプリケーションに取り組んでいます。

認証されたユーザーがタスクのリストを管理できるtodoアプリケーションのように考えてください。ユーザーはタスクリストを読むことができますが、タスクを作成したユーザーだけがタスクの一覧を削除または編集できます。

私はさまざまなオプションを試しましたが、正しいセキュリティポリシーが提示されませんでした。

セキュリティポリシーを簡略化するためにデータをどのように構成するかについての例がありますか?

サンプルセキュリティルール

私はこのような何か試してみました - 誰もがレコードを読み取るだけのuser_idを追加することができる必要があり、一致して、ユーザーにログインし、編集または削除できるよう

"rules": { 
"records" : { 
    ".read" : true, 
    "$user_id": { 
     ".write": "auth.uid === $user_id" 
     } 
    } 
    } 
} 

をレコード。

しかし、私がシミュレータで書き込みアクションを試みると、私は常に書き込み拒否エラーを受け取ります。リクエストbody/dataにauth uidを "user_id"として渡しています。

また、私はドキュメントでこれを見つけた

{ 
"rules": { 
"records" : { 
    ".read" : true, 
    ".write": "auth.uid === data.child('user_id').val()" 
    } 
    } 
} 
+0

あなたは何をしようとしているとそれが間違っているを投稿する必要があります。 – api55

+0

@ api55質問をサンプルセキュリティルールで更新しました。 – am17

答えて

3

を試してみました。ノードユーザーには、auth.uidをキーとして格納された子があります。だから、basiclyユーザーがそのエントリに書き込む前にキーにuidを比較します。

{ 
    "rules": { 
    "users": { 
     "$user_id": { 
     // grants write access to the owner of this user account 
     // whose uid must exactly match the key ($user_id) 
     ".write": "$user_id === auth.uid", 
     ".read": true 
     } 
    } 
    } 
} 

https://www.firebase.com/docs/security/guide/user-security.html

関連する問題