0
我對Firebase來說很新,而且我遇到了我的安全規則問題。我有一個註冊或登錄新用戶的Android客戶端。在該用戶的第一次登錄,我的數據保存到火力,像這樣:Firebase規則 - 首次登錄時不能存儲用戶數據
public void onAuthenticated(AuthData authData) {
//Save user data to firebase
Map<String, Object> map = new HashMap<String, Object>();
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).updateChildren(map);
}
(這被稱爲onAuthenticated()驗證用戶時)
然而,看來我的安全規則不允許用戶寫入數據庫,除非他們的數據已經存儲。我的規則如下:
{
"rules": {
"users":{
"$userid": {
".read": "auth.id == $userid && auth !== null",
".write": "auth.id == $userid && auth !== null"
}
}
}
}
而且,如果它很重要,這裏是一個什麼樣的數據看起來實際存儲時,它就像一個例子:我應該如何修改我的規則,以允許客戶端
在用戶數據通過服務器認證後寫入用戶數據?
編輯:經過一些測試,看起來這些規則不允許用戶寫任何東西到他們的用戶節點,即使它已經存在。
爲背景,爲空的檢查是沒有必要在這種情況下。如果訪問auth對象並且它不是對象,則安全規則將失敗。但是,創建它並沒有什麼壞處,並且在編寫這樣的規則時(auth.uid會阻止規則的第二部分執行)會有幫助:'auth.uid ==='frank'|| (auth === null && root.child('foo')。val()==='bar')' – Kato 2014-11-07 17:28:31
Oooh ...我喜歡'auth.uid ==='frank''規則。我們能否將這些注入到每個Firebase中? – 2014-11-07 18:56:46