2016-03-22 20 views
0

我在Firebase中擁有對象,並且我想限制僅訪問在對象中引用的用戶。我的火力地堡結構是這樣的:Firebase安全性:只有在對象中引用的用戶才能閱讀它

  • 對象
    • object_info
    • 接觸
      • $ CONTACT_ID
        • USER_ID
        • USER_ROLE
  • 用戶
    • $ user_ID的
      • USER_INFO

對象/聯繫人/ $ CONTACT_ID/USER_ID用戶參考/ $ USER_ID

因此,每個有權訪問的用戶都會在聯繫人的一個子項中顯示爲user_id。不幸的是,我找不到一種方法來搜索聯繫人的所有子女user_id。 有沒有方法可以設置這個Firebase安全規則,我應該更改我的整個數據庫結構以保證它的安全嗎?

回答

0

您可以檢查用戶節點的存在:

{ 
    "Object": { 
    ".read": "data.child('contacts').child(auth.uid).exists()" 
    } 
} 
+0

不幸的是,我不能。孩子data.child('contacts')。child(auth.uid)永遠不會存在。 auth.uid中的用戶密鑰存儲在存儲比用戶密鑰更多的信息的聯繫人的一層以上。這是因爲我需要使用尚未註冊的聯繫人,當他們註冊時,我可以更新對用戶的引用,而不必更新與此聯繫人關聯的所有內容。 – Alexander

+0

在這種情況下,它不起作用,您需要更改數據模型以允許您嘗試實施的用例。 –

+0

謝謝!任何建議如何實現這一目標?問題是,如果我直接引用用戶,我將不得不搜索與此對象關聯的所有內容,並檢查聯繫人是否顯示在某處以更新聯繫人的密鑰。 – Alexander

相關問題