火力地堡提供用於表示ID和動態子鍵通配符路徑。例如,下面的規則中的$ uid是一個'通配符',它允許該節點中的參數引用父節點。
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
在上例中,$ uid是/ users節點內每個用戶節點的通配符路徑。以下是每個節點如何擴展上述規則:
users
uid_0 <--------|
V
".write": "uid_0 === auth.uid" //only user with uid = uid_0 can write
uid_1
".write": "uid_1 === auth.uid" //only user with uid = uid_1 can write
uid_2
".write": "uid_2 === auth.uid" //only user with uid = uid_1 can write
您可以對此進行擴展以提供極大的靈活性。假設你想讓一定數量的用戶能夠訪問組節點。組規則可以是
"rules": {
"Groups": {
"$group_id" : {
".read": "root.child('Allowed_Users/' + auth.uid).val() === $group_id",
".write": "root.child('Allowed_Users/' + auth.uid).val() === $group_id"
}
}
這將每個組節點的訪問權限限制爲在Allowed_Users節點中指定的某個用戶組。在火力地堡數據庫中的數據可能看起來像:
Groups
group_0
//data
group_1
//data
Allowed_Users
uid_0: group_0
uid_1: group_0
是這個例子中,用戶uid_0和uid_1能讀/寫group_0但不讀/寫GROUP_1
來源
2016-12-17 14:05:52
Jay
安置自己的規則文本請,沒有圖像以及你試圖通過通配符完成的事情,因爲可能有解決方案。 – Jay
@Jay,澄清更新! – Ahsan
我發佈了一個奇妙的答案,但因爲我突然忘記了如何閱讀它是完全錯誤的問題。在那個筆記上......現在還不清楚問題的癥結所在 - 大多數firebase規則使用佔位符來引用封閉的父節點。也許你可以發佈你當前的規則,並描述你在做什麼。 – Jay