2015-06-05 66 views
2

我的應用程序是使用火力地堡的Facebook的身份驗證和我有以下用戶集合:火力地堡規則 - 限制訪問擁有用戶

{ 
    "fsdjf34hf98wjefj" : { 
    "uid" : "facebook:543634634536" 
    }, 
    "3298djwhy9hwd34234" : { 
    "uid" : "facebook:7658899965432" 
    } 
} 

我想限制訪問,以便用戶只能查看自己自己的用戶:

{ 
    "rules": { 
     ".write": true, 
     "users": { 
      ".read": "auth.uid === data.child('uid').val()", 
     } 
    } 
} 

我在嘗試從JavaScript訪問用戶,當出現以下錯誤:

Error: permission_denied: Client doesn't have permission to access the desired data.

有沒有人知道.read部分的正確語法?我已經嘗試了很多東西,但我似乎無法理解它背後的邏輯。

+0

現在有同樣的問題!希望有人可以幫忙 - 花了5個小時就可以了:( – Leo

回答

4

假設您的收藏是:

"users": { 
    "fsdjf34hf98wjefj" : { 
    "uid" : "facebook:543634634536" 
    }, 
    "3298djwhy9hwd34234" : { 
    "uid" : "facebook:7658899965432" 
    } 
} 

你的規則需要是這樣的:

{ 
    "rules": { 
    "users": { 
     "$user": { 
     ".read": "auth.uid === data.child('uid').val()", 
     } 
    } 
    } 
} 

$user在那裏適用於每個用戶節點

請注意,解決此類問題的最簡單方法是使用Firebase儀表板中的Simulator標籤來模擬操作。它會告訴你到底是爲什麼的操作被允許/拒絕,而SDK將(故意)只告訴你那個操作被拒絕。

+0

謝謝,我也直接訪問用戶集合,然後過濾到我需要的那個。這就是爲什麼我得到一個錯誤,因爲我無法查看所有 - - 只有我自己:) –