Reactjs FirebaseError:react js缺少权限或权限不足

Reactjs FirebaseError:react js缺少权限或权限不足,reactjs,firebase,google-cloud-firestore,firebase-security,Reactjs,Firebase,Google Cloud Firestore,Firebase Security,使用以下规则拒绝firebase权限: 此规则允许internet上的任何人查看、编辑和删除 Firestore数据库中的所有数据。这对获得成功很有用 已启动,但已配置为在30天后过期,因为 使您的应用对攻击者开放。当时,所有客户 对Firestore数据库的请求将被拒绝。 确保在此之前为你的应用编写安全规则,否则 你的应用程序将无法访问你的Firestore数据库 rules_version = '2'; service cloud.firestore { match /datab

使用以下规则拒绝firebase权限: 此规则允许internet上的任何人查看、编辑和删除 Firestore数据库中的所有数据。这对获得成功很有用 已启动,但已配置为在30天后过期,因为 使您的应用对攻击者开放。当时,所有客户 对Firestore数据库的请求将被拒绝。 确保在此之前为你的应用编写安全规则,否则 你的应用程序将无法访问你的Firestore数据库

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

    match /{document=**} {
      allow read, write: if false;
        }
      }
   } 
浏览器控制台屏幕截图

减速器代码:

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;
  }
}

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

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

规则中的
if false
表示没有人可以读取该数据,这就是为什么从应用程序读取被拒绝的原因

如果您想允许这种读取,您必须对安全规则进行建模以反映这一点。最简单的方法是如果为true,只需执行
,但这意味着世界上的每个人都可以随意读取和修改您的所有数据。这在开发过程中可能没什么问题,但当你向你的应用程序中添加更多用户时会变得危险

正确的解决方案是阅读Firebase文档,并实施准确反映与您的用例相关的规则

  • 转到
    控制台
  • 转到
    云Firestore
  • 数据
    选项卡导航到
    规则
    选项卡
  • 然后将规则编辑为: 拯救 然后再试一次


    祝你好运

    允许读,写:如果为false。我已经在这个方案中使用了这个规则,但是它不起作用,使得数据库规则中的更改如下所示。“dataset_name”:{.read:true,.write:true},您显示的规则是针对Reatime数据库的,但问题是关于Firestore的。它们是完全不同的数据库,具有不同的规则语法。PrayasAgrawal,我已经编辑了我的答案,请尝试一下。我误解了这个问题。多亏了@dougstevenson,您显示的规则总是会拒绝任何客户端的所有访问。你为什么期待不同的东西?
      rules_version = '2';
        service cloud.firestore {
        match /databases/{database}/documents {
        match /{document=**} {
        allow read, write;
       }
      }
    }