这里是我的firestore规则。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth!=null;
}
}
}
当我设置允许读取时,写入:如果为真;我可以访问数据库。但是,当我将其更改为上面的代码时。我得到:FirebaseError: Missing or insufficient permissions.
我已经阅读了很多关于此错误的问题,唯一有效的解决方案是允许所有人具有读取权限(我认为这会很糟糕)。
我如何验证自己(所有者)的身份? 下面是用于获取文档的代码。
var firebaseConfig = {
apiKey: "XXXXXXXXXXXXXXXXXXXXXX",
authDomain: "XXXXXXXXXXXXXXXXX",
projectId: "XXXXXXXXXXXX",
storageBucket: "XXXXXXXXXXXXXXXXX",
messagingSenderId: "XXXXXXXXXXXXXXX",
appId: "XXXXXXXXXXXXXXXXXXXX",
measurementId: "XXXXXXXXXXXX"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
var db = getFirestore();
console.log(db)
const docRef = doc(db,"fta-2up-prob", "fta-2up-prob");
console.log(docRef)
const snapshot = await getDoc(docRef);
console.log(snapshot)
如前所述,如果我允许任何人读取数据库,此代码确实有效。 即使看起来很明显,任何建议也会非常感激(我对此非常陌生)。
答案 0 :(得分:0)
当您需要此权限来访问文档 if request.auth!=null
时,您是说用户需要使用 Firebase 身份验证登录才能访问数据。您的任何代码都没有让用户登录 Firebase 身份验证,因此访问被拒绝。
如果您希望数据库中的文档具有所有者,则必须在数据库之上自己实现。有关此示例,请查看 securing content-owner only access 上的 Firebase 文档。
如果您希望自己作为项目的所有者有权访问所有数据,通常称为应用程序管理员。 Firebase 没有为此内置任何内容,但在其上构建非常容易。举个例子,我的答案在这里:User conflict when using same Auth method for Admin and Normal users | Firebase Auth