2017-10-12 27 views
0

閱讀大量教程和StackOverflow上的問題,我還是想不出該怎麼做了。 所有教程先從以下規則:火力地堡規則,允許新用戶包容和用戶特定的路徑特權

"users":{ 
    "$uid":{ 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
    } 
} 

但如何讓在用戶節點的新用戶,當新用戶登錄並保持讀寫用戶特定的路徑(AUTH!= NULL)特權?

換句話說: 有沒有辦法讓一個新用戶在登錄後插入到用戶節點中,同時限制他只能讀寫他自己的節點?

另一個問題。我有另一個節點與newData.exists()寫入規則。在模擬器中,當我嘗試向節點寫入空數據時,它會按預期拒絕它,但它允許我將null寫入同一節點的子節點。節點不應該將規則寫入子級?

+0

你能否詳細說明 - 或者舉一個例子爲 - 您的第二個問題嗎? – Grimthorr

+0

永遠不會,對不起。這不是因爲我與它一起制定的另一條規則而起作用。 –

回答

0

你有上面的規則,會匹配$uidauth.uid。因此,例如,如果用戶的UID是cKzMyjImSBX6ybzeCCCjf0qbTym1,他們將只能閱讀/users/cKzMyjImSBX6ybzeCCCjf0qbTym1 &寫在你的數據庫,無論此鍵當前是否存在(如果寫入時它不存在,這將是創建)。

Firebase documentation on rules

一旦用戶通過驗證,在你的火力地堡數據庫的權威性變量 規則的規則將與用戶的信息填充。此 信息包括其唯一標識符(UID)以及鏈接 帳戶數據,諸如Facebook的ID或電子郵件地址,以及其他信息 。

+0

好吧,最後我明白了,規則與數據不相關。所以我不需要擔心用戶密鑰(id)的創建,但主要是通過訪問(讀取和寫入)存儲在密鑰下的所有信息。謝謝Grimthorr指點我的方向。 –

+0

我基本上離開了我的規則作爲上面的例子,並且能夠以我想要的方式從數據庫讀寫。 –