Предотвращение регистрации пользователя в Firebase? - PullRequest
0 голосов
/ 14 апреля 2020

Я работал над небольшим приложением, используя firestore . Я также реализовал basi c auth, используя электронную почту / пароль (из комплекта пользовательского интерфейса Firebase).

Теперь существующих пользователей (которые я сделал вручную) могут войти в систему , но если электронное письмо не найдено , то авторизация позволит вам зарегистрироваться . Это можно отключить? Потому что я хочу как-то ограничить доступ, по крайней мере, немного.

__

На данный момент я сделал написал db-rule , так что только user в моей 'users'-collection (где document uid = userid ) и имеет логическое поле 'admin' и предоставляет им доступ для записи.

Само правило выглядит следующим образом:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
        allow read: if request.auth.uid != null;
        allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;
    }
  }
}

это «безопасно» и «хорошо», который будет реализован так?

1 Ответ

0 голосов
/ 14 апреля 2020

Как вы можете видеть на этом вопросе сообщества , в firebase вы не можете отключить регистрацию, не отключив вход для всех пользователей, поэтому для создания этого элемента управления вам потребуется:

  • Установите это на своем провайдере, так как вы используете FirebaseUI, когда вы создаете класс, делая что-то вроде этого:
List<AuthUI.IdpConfig> providers = new ArrayList<>();
providers.add(new AuthUI.IdpConfig.EmailBuilder()
    .setAllowNewAccounts(false)
    .build());
  • Управляйте им с помощью облачных функций с помощью делать что-то вроде этого:
const admin = require('firebase-admin');

exports.blockSignup = functions.auth.user().onCreate(event => {
  return admin.auth()
    .updateUser(event.uid, {disabled: true})
    .then(blockedUser => console.log(`The user ${blockedUser.toJSON()} has been blocked from SignIn`))
    .catch(error => console.log(`${error}`));
});
  • Решение, которое вы уже внедрили, имеет список авторизованных пользователей и блокирует всех пользователей, которых нет, это хороший выбор, если у вас есть ограниченное количество пользователей. Также для вашей точки безопасности это будет видно только для самих правил firebase, и пользователям все равно нужно будет войти в систему, чтобы правила могли сравнивать uid со списком, поэтому я бы сказал, что это будет достаточно безопасно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...