FirebaseError:缺少权限或权限不足

时间:2020-03-27 13:49:54

标签: javascript firebase google-cloud-firestore

我在救火站上遇到了大麻烦。 这里有代码源的链接: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 个答案:

答案 0 :(得分:2)

引自您的评论:

这些是我的[安全]规则... allow read, write: if false

自从您说if false

  • 该条件永远不会成立,

  • 因此,您的安全规则将不允许您从前端写入数据库。

您可以

  1. 使用后端Cloud Function中的Admin SDK进行写操作,或
  2. 更改规则。

编辑:

请注意,虽然在开发过程中将读写规则设置为if true很方便,但这意味着任何人都可以访问您的数据库!

我强烈建议您阅读有关Firestore安全规则的文档,一旦您的数据库中有任何重要内容,就应制定规则以反映您自己,您的团队和最终用户已注册和未注册的适当访问级别。

文档:https://firebase.google.com/docs/firestore/security/overview

答案 1 :(得分:1)

收到的错误消息表示您的应用程序正在尝试读取或写入一些您无权访问的数据。

对Cloud Firestore的所有数据访问均由Firebase的服务器端security rules控制,以确保每个用户只能访问其被授权的数据。

要摆脱此错误,您需要找到生成此错误的确切代码。然后,您有两个选择:

  1. 修改安全规则以允许操作。
  2. 修改代码以符合安全规则允许的范围。

这两个都不比另一个更好。这完全取决于您的应用程序的用例和业务规则。

我建议您阅读上面链接的有关业务规则的文档,然后再研究此附加guide。有了这些信息,您应该能够解决问题。

如果您在此之后遇到具体问题,请向minimal security rules, data, and code with which anyone can reproduce the problem发布问题,我们会尽力帮助您。