В первом наборе правил пользователь может прочитать весь узел /Users
, если они аутентифицированы, и если этот узел /Users
содержит свойство uid
со своим значением.
Во втором наборе правил aПользователь может читать только конкретный подузел /Users
при тех же условиях.Переменная $
действует как подстановочный знак во втором наборе правил: правила в /Users/$uid
применяются к каждому конкретному пользовательскому узлу.
Допустим, у вас есть узел /Users
, например:
Users: {
uid1: {
name: "user 1",
uid: "uid1"
},
uid2: {
name: "user 2",
uid: "uid2"
},
uid3: {
name: "user 3",
uid: "uid3"
}
}
Со вторым набором правил пользователь uid1
может читать только свой собственный узел /Users/uid1
.Если они попытаются прочитать /Users
, они получат Permission denied
.И поэтому они не могут получить список всех пользователей.
Теперь давайте внесем небольшое изменение в JSON, добавив /Users/uid
:
Users: {
uid: "uid1",
uid1: {
name: "user 1",
uid: "uid1"
},
uid2: {
name: "user 2",
uid: "uid2"
},
uid3: {
name: "user 3",
uid: "uid3"
}
}
Теперь с вашим первым набором правил,только uid1
может читать /Users
.Это даст им как собственные данные, так и данные всех остальных пользователей.