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