Есть ли способ ограничить регистрацию в firebase
есть ли способ запретить пользователям регистрировать учетные записи электронной почты/пароля firebase, чтобы новые пользователи не могли зарегистрироваться? У меня есть небольшое приложение, к которому только несколько администраторов должны иметь доступ(который я вручную создал в Администраторе Firebase), и то, как он настроен прямо сейчас, похоже, что кто-то может ввести немного javascript и зарегистрировать учетную запись.
3 ответов
Firebase простой Логин-это абстракция, построенная поверх Firebase Пользовательский Логин для удобства. При использовании аутентификации по электронной почте / паролю стоит иметь в виду, что это просто создание сопоставления между этим письмом и паролем и автоматическое создание токенов аутентификации для использования в правилах безопасности.
в вашем конкретном случае, если все пользователи "admin" уже созданы, вы можете добиться поведения, которое вы ищете через правила безопасности. Например, если вы хотите разрешить доступ к дереву данных Firebase только для чтения / записи аутентифицированным пользователям в этом списке, попробуйте написать правила безопасности чтения / записи верхнего уровня, которые требуют, чтобы пользователь был в списке "администраторы":
{
".read" : "auth != null && root.child('admins').hasChild(auth.uid)",
".write" : "auth != null && root.child('admins').hasChild(auth.uid)"
}
эти правила выше гарантируют, что пользователь аутентифицируется (через auth != null
) и требуют, чтобы идентификатор аутентифицированного пользователя был в списке администраторов (root.child('admins').hasChild(auth.uid)
).
последний шаг-фактически сделать этих пользователей администраторами, написав их в admins
поддерева. Предположим, у вас есть пользователи 1, 4 и 7, чтобы сделать администраторов, обновите дерево данных, чтобы отразить следующее:
{
...
"admins": {
"1": true,
"4": true,
"7": true
}
}
в результате этого, даже если другие пользователи могут создавать новые сопоставления электронной почты / пароля с помощью Firebase Simple Login, эти сопоставления не будут влиять на ваше приложение, поскольку оно ограничено правилами безопасности.
@RobDiMarco предоставил отличный ответ, но у него есть недостаток.
правила root.child('admins').hasChild(auth.uid)
пройдет, в случае auth.uid
будет пустой строкой.
вы можете проверить это в Firebase Database Security Simulator, очистив
вы также можете отключить регистрацию нового пользователя, добавив облачную функцию, которая удаляет новых пользователей при регистрации. См. Этот ответ:
как предотвратить регистрацию нового пользователя на Firebase?