Есть ли способ ограничить регистрацию в 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?