2017-11-15 12 views
0

ユーザがrecidと等しいユーザIDを持つユーザがデータを読み取ることができるようにFirebase Realtime Databaseに新しいルールを追加するにはどうすればよいですか?特定のユーザのFirebaseリアルタイムデータベース読み取りルール

私はこのように構成されたマッサージのテーブルを持っている:

"messages" : { 
    "-KyyjeMOtc7fWAsOiuiP" : { 
     "recid" : "FL5hyQJrsHWRQsRtiLe1PxkyRnk1", 
     "senderid" : "6K6pQHaCishDlCb0Y9AaN3zI22n1", 
     "text" : "hi" 
    }, 
    "-KyykczCNpsSL6a1t8vt" : { 
     "recid" : "FL5hyQJrsHWRQsRtiLe1PxkyRnk1", 
     "senderid" : "6K6pQHaCishDlCb0Y9AaN3zI22n1", 
     "text" : "test" 
    }, 
    } 

私は、データがデータベースに追加されたときに、uidrecidと等しい場合にのみ、ユーザーがデータを見ることができるというルールにしたいです。これを実現するために

答えて

1

、あなたは、あなたのデータベース用に似たものuser-based security rulesを作成することができます。$messageIdあなたmessagesリストの下のいずれかのキーと一致します$location variableを使用して、この例では

{ 
    "rules": { 
    "messages": { 
     "$messageId": { 
     ".read": "auth.uid == data.child('recid').val()", 
     ".write": "auth !== null" 
     } 
    } 
    } 
} 

を。次に、current user's auth.uidrecidの子値と一致する場合にのみ、読み取りアクセスを許可します。

+0

私は読み取りアクセスについてのみ質問していたことは知っていますが、これらのルールではユーザーはまだ他のユーザーのメッセージを変更/削除できることを指摘しておく必要があります。 – dbandstra

+0

tanks @dbandstra他のユーザーの変更/メッセージ? –

+0

私の頭の上から外して、それは '' .write ":"!data.exists()|| auth.uid == data.child( 'senderid').val() "'でなければなりません。今、誰でも作成できますが、送信者だけが変更/削除できます。私はルールがまだこの後、より多くの仕事を必要と思う。おそらく、送信者にも読み取りアクセス権を与えるべきです。 'recid' /' senderid'フィールドではなく、 'text'フィールドだけを変更することができます。あなたはfirebaseの初心者ですか?あなたは、このデータベースを使用して作業中のアプリケーションを持っていますか? – dbandstra

関連する問題