FirebaseError:缺少响应js权限或权限不足

时间:2020-06-11 12:42:03

标签: reactjs firebase google-cloud-firestore firebase-security

以下规则拒绝了

firebase权限: 该规则允许互联网上的任何人查看,编辑和删除 Firestore数据库中的所有数据。这对于获取有用 已启动,但已配置为在30天后过期,因为 使您的应用向攻击者开放。当时,所有客户 对您的Firestore数据库的请求将被拒绝。 确保在此之前为您的应用编写安全规则,否则 您的应用将失去对Firestore数据库的访问权限

rules_version = '2';
 service cloud.firestore { 
    match /databases/{database}/documents {

    match /{document=**} {
      allow read, write: if false;
        }
      }
   } 

浏览器控制台的屏幕截图 screen shot of browser console

output of the redux state in h3 tag

减速器代码:

import { GET_ALL_SCREAM, LOADING } from "../types";
import { db } from "../../firebase/config";
const initialState = {
  data: [],
  loading: false,
  error: {},
};
export default function (state = initialState, action) {
  switch (action.type) {
    case GET_ALL_SCREAM:
      db.collection("screams")
        .get()
        .then((data) => {
          let screams = [];
          data.forEach((doc) => {
            screams.push({
              id: doc.id,
              ...doc.data(),
            });
          });
          return { ...state, loading: false, date: screams };
        })
        .catch((err) => {
          console.error(err);
          return { ...state, loading: false, error: { ...err.response } };
        });
        console.log("error is in somewhere");
        return { ...state, loading: false, error: { "error": "something went wrong" } };
    case LOADING:
      return { ...state, loading: true };
    default:
      return state;
  }
}

3 个答案:

答案 0 :(得分:1)

对数据库规则进行如下更改。

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

答案 1 :(得分:1)

您的规则中的if false意味着没人可以读取该数据,这就是为什么您的应用程序读取被拒绝的原因。

如果要允许该读取,则必须对安全规则进行建模以反映这一点。最简单的方法是简单地执行if true,但这意味着世界上每个人都可以随意读取和修改您的所有数据。在开发过程中这样做可能很好,但随着您向应用程序中添加更多用户,这变得很危险。

正确的解决方案是阅读securing access to your data上的Firebase文档,并实施完全反映与用例相关的规则。

答案 2 :(得分:0)

  1. 转到Firebase console
  2. 转到Cloud Firestore
  3. Data 标签导航到 Rules 标签

然后将规则编辑为:

  rules_version = '2';
    service cloud.firestore {
    match /databases/{database}/documents {
    match /{document=**} {
    allow read, write;
   }
  }
}

保存

然后再试一次

祝你好运