Как предоставить пользователям доступ к облачному пожарному хранилищу таким образом, чтобы они косвенно являлись частью моего приложения, но не были зарегистрированы в моей консоли Firebase? - PullRequest
0 голосов
/ 01 апреля 2019

В основном я разрабатываю угловое приложение 7 , где каждый пользователь может читать и писать, что находится внутри пожарного депо, и для этого я отсылаю их официальный документ в AngularFire2 . Поэтому мне нужно получать данные таким образом, чтобы при каждом входе пользователя в мое приложение он / она уже проходил аутентификацию и только после этого получал доступ к данным облачного пожарного хранилища. Я могу сделать это следующим образом:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

В настоящее время я аутентифицируюсь с signInWithEmailAndPassword() и GoogleAuthProvider().

doGoogleLogin() {
  return new Promise<any>((resolve, reject) => {
    const provider = new firebase.auth.GoogleAuthProvider();
    provider.addScope('profile');
    provider.addScope('email');
    this.afAuth.auth
    .signInWithPopup(provider)
    .then(res => {
      resolve(res);
    }, err => {
      console.log(err);
      reject(err);
    });
  });
}

doLogin(value) {
  return new Promise<any>((resolve, reject) => {
    firebase.auth().signInWithEmailAndPassword(value.email, value.password)
    .then(res => {
      resolve(res);
      console.log(this.afAuth);
    }, err => reject(err));
  });
}

Я хочу предоставить пользователям доступ на основе databaseURL и projectId, которые не включены в список пользователей в моей консоли Firebase, но уже вошли в систему по электронной почте в браузере. Я знаю, что это может звучать немного странно, несмотря на то, что я могу аутентифицироваться с помощью этих методов, но ограничением является количество пользователей в консоли, которое может быть максимум 500 . Итак, главное, могу ли я получить и использовать этот токен сеанса и отправить его в firebase для получения данных?

Я уже пытался определить правила по-другому, но, похоже, ни одно из них не работает. Я также пошел дальше, чтобы посмотреть, смогу ли я предоставить доступ только пользователям моего домена, но, видимо, это не совсем так, потому что пользователи спама могут отправлять те же параметры, и поэтому основная цель уничтожается. Если вам нужно больше ясности с вопросом, пожалуйста, спросите. Спасибо за вашу помощь и время. Мир.

1 Ответ

0 голосов
/ 01 апреля 2019

С правилами безопасности Firebase невозможно применить индивидуальный контроль над данными к людям, которые не вошли в систему с помощью аутентификации Firebase. Правилам безопасности просто не доступен механизм для определения того, кто что может делать, если их личность не проверена Auth. Файлы cookie браузера не доступны. Любой, кто не вошел в систему, фактически заставит request.auth равняться нулю при попытке доступа к документам с мобильных клиентов.

...