FirebaseError: отсутствуют или недостаточные разрешения - PullRequest
1 голос
/ 27 марта 2020

У меня большие проблемы с пожарным магазином. здесь есть ссылка на источники кода: https://github.com/10100011001/10100011001.github.io/tree/master/public/assets/scripts

Модель:

self.saveData = function(input) { 
    let userInfo = {
      username : input.value,
      userScore : self.settings.playerScore,
    };
    let userStr = JSON.stringify(userInfo);
    localStorage.setItem('user', userStr);
    let name = input.value,
        score = self.settings.playerScore;
    myAppDB.collection('results').doc(`player_${name.replace(/\s/g, "").toLowerCase()}`).set({
      player: `${name}`,
      score: `${score}`,
    })
    .then(function() {
      console.log('result saved');
     })
     .catch(function(error) {
      console.log('error saving result: ', error);
    });
    myView.clearInput(input);
    myView.closeModal();
  };

Контроллер:

self.saveData = function() {  // сохраняем данные из инпута
  let input = myControllerContainer.querySelector('#playerName');
  myModel.saveData(input);
}

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Цитируется из вашего комментария:

это мои [правила безопасности] ... allow read, write: if false

Так как вы сказали if false,

  • это условие никогда не будет выполнено,

  • , следовательно, ваши правила безопасности не позволят вам писать в вашу базу данных из внешнего интерфейса.

Вы можете

  1. использовать Admin SDK в облачной функции внутреннего интерфейса для выполнения записи или
  2. изменить правило.

Редактировать:

Обратите внимание, что хотя во время разработки удобно устанавливать правила чтения-записи на if true, это означает, что любой может получить доступ к вашей базе данных!

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

Документы: https://firebase.google.com/docs/firestore/security/overview

1 голос
/ 27 марта 2020

Полученное сообщение об ошибке означает, что ваше приложение пытается прочитать или записать некоторые данные, к которым у вас нет доступа.

Весь доступ к данным в Cloud Firestore контролируется серверной частью Firebase правила безопасности , которые гарантируют, что каждый пользователь может получить доступ только к тем данным, для которых он авторизован.

Чтобы избавиться от этой ошибки, вам необходимо найти точный код, который ее генерирует. Затем у вас есть два варианта:

  1. Изменить правила безопасности, чтобы разрешить операцию.
  2. Изменить код, чтобы он оставался в пределах, разрешенных правилами безопасности.

Ни один из них не лучше, чем другой. Все зависит от сценариев использования и бизнес-правил вашего приложения.

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

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

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