Я храню имена пользователей отдельно в разделе проверки в БД. Существуют только имена пользователей, поэтому, когда пользователь регистрируется, он может ввести имя пользователя и посмотреть, доступно ли имя пользователя до его регистрации. Правила для этого теперь ".read": true, так что в основном каждый может получить легкий доступ ко всем именам пользователей в БД. Я хотел бы предотвратить это, но я не уверен, как это сделать, поскольку я не могу использовать правило auth! = Null, поскольку пользователь еще не создан.
Моя единственная идея состояла в том, чтобы разрешить чтение только имени пользователякоторый запрашивается, то есть что-то
firebase.database().ref('Validations/Usernames')
.orderByChild('name')
.equalTo(username)
.once('value')
.then(snapshot => ....
, а затем с использованием правила, подобного этому:
"$name": {
".read": "query.equalTo == $name"
}
т.е. разрешить чтение только для имени пользователя, которое было проверено клиентом. Теперь это терпит неудачу, потому что для всех остальных его проверка с помощью orderByChild не имеет доступа к ним.
Есть ли какой-либо аналогичный способ разрешить чтение только значения, которое было запрошено для чтения с клиента? Или, может быть, есть какой-то совершенно другой способ, которым я должен подойти к проверке имени пользователя, прежде чем он создаст учетную запись?