【发布时间】:2022-01-15 13:23:01
【问题描述】:
仅当文档具有使用 firebase 登录的当前用户的用户 ID 时,我才尝试读取文档集合。这是我的数据库规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /todos/{todoId} {
allow read: if isLoggedIn() && request.auth.uid == resource.data.userId;
allow create: if isLoggedIn() && request.auth.uid == request.resource.data.userId;
allow update, delete: if isLoggedIn() && request.auth.uid == resource.data.userId;
}
function isLoggedIn() {
return request.auth != null;
}
}
}
创建文档不是问题,而是阅读它们。这是我检索数据的函数:
getData () {
this.$fire.firestore.collection('todos').get()
.then((doc) => {
if (doc.exists) {
console.log('Document data:', doc.data())
} else {
// doc.data() will be undefined in this case
console.log('No such document!')
}
}).catch((error) => {
console.log('Error getting document:', error)
})
}
似乎 resource.data.id 规则没有指向 todo userId,因此我得到 FirebaseError: Missing or enough permissions。这是我当前的数据库结构:
关于为什么该规则没有按预期工作的任何想法?
【问题讨论】:
标签: javascript firebase google-cloud-firestore nuxt.js firebase-security