【发布时间】:2021-06-06 20:06:58
【问题描述】:
我正在通过 react js 访问 firebase 上的火石数据库。这是我的firebase.js 文件:
import firebase from "firebase";
const firebaseConfig = {
apiKey: "SECR",
authDomain: "SECRET",
projectId: "SECRET",
storageBucket: "SECRET",
messagingSenderId: "SECRET",
appId: "SECRET",
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
const db = firebaseApp.firestore();
const auth = firebase.auth();
const provider = new firebase.auth.GoogleAuthProvider();
export { auth, provider, db };
现在,如果我理解正确,这段代码只会告诉 firebase 我的数据库的位置。此文件是否也用作身份验证?
让我澄清一下,我现在正在写入数据库(这是在另一个文件上):
import { db } from "../firebase";
function Login() {
const handleLogin = () => {
const name = prompt("Type name");
if (name) {
db.collection("opponents").add({
name: name,
});
}
};
当我在 firebase 中的安全规则设置为允许所有人读写时,我可以在这里访问数据库。这不安全。我想改变它。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
所以我将规则替换为这个(并没有改变其他任何内容):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
这一次没有成功。所以我的问题是,我如何安全地只授予我的代码对数据库的读/写访问权限。我可以这样做,如果我的 firebase 配置值正确,那么它可以让我访问吗?还是有更好的方法只允许我的代码访问数据库?
【问题讨论】:
-
您似乎没有在您共享的代码中的任何位置登录 Firebase。
-
哦,不,我从未通过我的代码登录到 Firebase。你的正确。我该怎么做呢?
-
@FrankvanPuffelen 我有点困惑我认为这个文档是为了允许用户使用 google/custom/github 等登录。我想我想要的是不同的,我想访问我的网站允许我的网站完全访问数据库。我理解错了吗?所以数据库只允许从我的网站读/写,而不是从任何随机网站
标签: reactjs firebase google-cloud-firestore