Почему мой проект Firebase работает без указания apiKey? - PullRequest
0 голосов
/ 11 июля 2019

Я настроил проект Firebase, который использует базу данных Firestore. мне дали следующий фрагмент кода, чтобы использовать его в моем коде Javascript:

    // Your web app's Firebase configuration
    var firebaseConfig = {
    apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    authDomain: "xxxxxxxxxx.firebaseapp.com",
    databaseURL: "https://xxxxxxxxxxxxx.firebaseio.com",
    projectId: "xxxxxxxx",
    storageBucket: "xxxxxxxxx.appspot.com",
    messagingSenderId: "xxxxxxxxx",
    appId: "1:xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);

Все работало до этого момента. Затем мне нужно было убедиться, что только мой домен мог использовать приложение, настроив авторизованные домены в проекте firebase, а также в apiKey в меню «учетные данные» из проекта Google Cloud Platform.

Мой проект все еще работал до этого момента, но я заметил, что он все еще работал из любого домена. Таким образом, ограничение не работает. На самом деле, проведя дополнительное тестирование, я обнаружил, что apiKey даже не был необходим для работы моего проекта, и я могу сократить фрагмент до следующего, и все еще работает:

    // Your web app's Firebase configuration
    var firebaseConfig = {
    projectId: "xxxxxxxx",
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);

Поэтому мне интересно: как мой проект может запускаться и записываться в базу данных Firestore только с указанным идентификатором проекта? Мне дается куча информации во фрагменте, которая даже не нужна.

У кого-нибудь есть идея, почему это происходит со мной? Я попытался создать новый проект, следуя другим учебникам снова, с тем же результатом. На самом деле, одно из руководств, которые я использовал, имеет такое же поведение, как и проект этого руководства (он на самом деле онлайн), просто указав идентификатор проекта, и я могу заставить его квоту Firestoere исчерпать, рассылая его с моего локального сервера.

Я не могу найти информацию о подобном случае с моим. Пожалуйста, помогите.

PS: вот мои правила базы данных Firestore, если это имеет значение:

    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }

1 Ответ

1 голос
/ 11 июля 2019

Каждый проект Firebase на самом деле является проектом Google Cloud, и каждый облачный проект имеет уникальный идентификатор. Поскольку в каждом проекте может быть только один экземпляр Firestore, достаточно просто указать его идентификатор.

Другие значения из файла конфигурации используются для других продуктов Firebase. Если вы не используете эти продукты, то они вам не нужны. Не стесняйтесь оставлять их, если вас это устраивает. Имейте в виду, что в будущем у вас могут возникнуть проблемы, если вы не используете полную конфигурацию.

Если вы беспокоитесь о безопасности своего экземпляра Firestore, вы должны использовать правила безопасности, чтобы ограничить, кто может читать и записывать какие данные. Невозможно ограничить доступ к нему в зависимости от домена вашего веб-приложения или местоположения пользователя. Правила, которые у вас есть сейчас, позволяют любому, у кого есть подключение к Интернету, создавать, изменять и удалять любые документы в вашем экземпляре Firestore. Вы можете изменить это.

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