2015-06-13 72 views
0

默認設置提供了完全訪問:如何使用Firebase規則對所有節點進行讀取/寫入訪問?

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

對於從火力地堡指南和文檔測試我的規則寫入的理解,我(現在回落至)努力實現相同的結果的緣故通過編寫規則爲4個父節點。

如果有所作爲,前兩個節點只有值,沒有子節點。 ** Sidequest:他們還叫做節點嗎?

下面的規則會導致與上述規則更改爲錯誤讀取和寫入時相同的行爲。

{ 
    "rules": { 
    "myNode1": { 
     ".read" : true, 
     ".write" : true 
    }, 
    "myNode2" : { 
     ".read" : true, 
     ".write" : true 
    }, 
    "myNode3" : { 
     ".read" : true, 
     ".write" : true 
    }, 
    "myNode4" : { 
     ".read" : true, 
     ".write" : true 
    } 
    } 
} 

我的規則出了什麼問題?

UPDATE /背景:

我有停止在這裏運行(在if (authData) {子句中)的authDataCallback:

var ref = new Firebase("https://<my>.firebaseio.com") 

ref.once("value", function(snapshot){ 

發現,如果我改變裁判VAR到更具體的東西:var ref = new Firebase("https://<my>.firebaseio.com/myNode1"),將authDataCallback完整運行。

當然,不需要生成整個數據庫的快照;這是獲取我需要的數據的一種困惑方式。我已經更新了,但我仍然困惑於爲什麼規則阻止了回調,考慮到我對整個數據庫進行了讀寫操作。

+0

這些只是規則,據我所知,是非常有效的規則。爲了能夠告訴你什麼是錯的,你還應該顯示你正在嘗試做什麼(可能執行某種形式的查詢/讀取操作),你期望的結果是什麼以及你得到了什麼結果。 –

+0

@FrankvanPuffelen我添加了一些上下文。 – JBG

+0

完美,這確實是缺少的。 Jay的回答是正確的:在你的第二套規則中,用戶不能讀取根節點,所以這個監聽器不起作用。這不是很直觀,我同意。我們擴展了文檔中的解釋,但很多人仍然遇到它。 https://www.firebase.com/docs/security/guide/securing-data.html#section-filter –

回答

1

我覺得這是根據所提供的信息回答:

兩套您發佈的規則是不同的。第一組

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

允許任何人閱讀和

https://<my>.firebaseio.com 

第二套規則寫訪問的每一個節點,其中包括父節點,你的火力點內讓你的火力點內每個人訪問特定的節點但阻止訪問所有其他節點,包括訪問父節點。在更新中,代碼試圖讀取沒有爲其定義規則的父節點,因此默認情況下,讀取和寫入都是假的。

所以說,你有以下結構:

https://whirlygig.firebaseio.com 

Whirlygig 
    someRandomData: "3.141" 
    otherRandomData: "6.02" 
    myNode1 
    firstName: "first" 
    lastName: "last" 
    myNode2 
    first: "first" 
    last: "last" 

有了您的第一套規則,每個人都可以訪問someRandomData還有myNode1,myNode2等

與第二組的規則,每個人都只能訪問myNode1和myNode2,但無法訪問某些隨機數據

+0

尤里卡。謝謝,傑伊! – JBG

相關問題