如何允許從組中讀取特定專案但阻止列出組成員
通常的做法是通過建立專案 ID 為鍵的簡單值節點來建立專案組。例如,我們可以通過在 /administrators/$user_id
建立一個值為 true
的節點,將使用者新增到管理員組。出於安全原因,我們不希望任何人知道管理員是誰,但我們仍然想檢查 Authenticated 使用者是否是管理員。有了這些規則,我們可以這樣做:
{
"rules": {
"administrators": {
// No one can list administrators
".read": "false",
"$uid": {
// Authenticated user can check if they are in this group
".read": "$uid === auth.uid",
// Administrators can write
".write": "data.parent().child(auth.uid).val() === true",
// Allow only add or delete, no duplicates
".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
}
}
}
}