firebase权限: 该规则允许互联网上的任何人查看,编辑和删除 Firestore数据库中的所有数据。这对于获取有用 已启动,但已配置为在30天后过期,因为 使您的应用向攻击者开放。当时,所有客户 对您的Firestore数据库的请求将被拒绝。 确保在此之前为您的应用编写安全规则,否则 您的应用将失去对Firestore数据库的访问权限
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
浏览器控制台的屏幕截图
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;
}
}
答案 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)
console
Cloud Firestore
Data
标签导航到 Rules
标签 rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
然后再试一次
祝你好运