嘗試實施,以便用戶只能訪問用戶正在玩的遊戲的遊戲數據。 基本上,如果用戶是玩家列表的一部分,用戶應該能夠閱讀。我在所有$ GameID中都有參賽選手名單。 所有用戶都有自己的唯一用戶名,用戶名 - > FirebaseID - >用戶名值。Firebase規則,限制僅限參與用戶訪問
我可以得到以下工作,當模擬讀取$ GameID中的用戶是其中一部分的孩子,但它不給用戶訪問時,當我在我的應用程序中嘗試精簡版。
在電話應用:
GamesDataDatabase = FirebaseDatabase.getInstance().getReference("Games");
GamesDataDatabase.limitToFirst(50).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
......
規則:
"Games": {
"$GameID": {
".read": "root.child('Games').child($GameID).child('metaData').child('players').child(root.child('Users').child(auth.uid).child('username').val()).exists()",
似乎並沒有什麼區別,如果我取代 「數據」 與root.child( '遊戲')子($。遊戲ID)
試圖東西回來和第四,但似乎並沒有能夠得到這個規則的工作... :(
如果我要遷移到Cloud Firsestore(新測試版程序),這項工作是否可行? – Mathoa
我認爲這可能確實符合這裏描述的規則:https://firebase.google.com/docs/firestore/security/secure-data#shallow_queries但我還沒有嘗試過。 –
不應該有可能爲遊戲添加read:false,並且由於Firebase實時數據庫的構建,它應該檢查下一級別(子級)的訪問權限嗎? 我試過這個,但得到了同樣的結果,我的用戶在應用程序中沒有訪問權限(即使模擬允許訪問....) – Mathoa