service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if userId == request.auth.uid;
}
}
}
我使用的是javascript,检索“组”的代码如下:
console.log("uid: ", uid)
db.collection("users/" + uid + "/groups")
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.data())
})
})
现在,由于cloud firestore没有像realtime database这样的调试工具,所以我自己做了一些调试。
我有一个uid为“5LS2NA21UGBABEW4AKYWYEF9FH42”的测试用户,所以我像这样更改了规则:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if "5lS2NA21UgbabEw4AkyWyef9FH42" == request.auth.uid;
}
}
}
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if "5lS2NA21UgbabEw4AkyWyef9FH42" == userId;
}
}
}
现在我无法从数据库中获得任何数据。
有人能告诉我我做错了什么吗?
我想我已经想通了。问题是{userid=**}
如果您有以下规则
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId=**} {
allow read: if userId == request.auth.uid;
}
}
}
并且试图访问用户/5LS2NA21Ugbabew4AkyWYEF9FH42/groups,则“userid”变量的计算结果不是5LS2NA21Ugbabew4AkyWYEF9FH42(我不知道它是什么,但我猜是“5LS2NA21Ugbabew4AkyWYEF9FH42/groups”)。因此,如果您想将文档私有化,您必须在规则中指定每一个文档,如下所示。
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
match /groups/{groupId} {
allow read: if userId == request.auth.uid;
}
match /events/{eventId} {
allow read: if userId == request.auth.uid;
}
}
}
}
最近我收到了一系列Firebase通知,涉及: [Firebase]您的Cloud FiRecovery数据库有不安全的规则 我们检测到您的安全规则存在以下问题:任何用户都可以写入您的整个数据库。因为您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以窃取、修改或删除您的数据,并会抬高您的账单` Edit2:我需要的是允许每个人都写,而不需要登录,但是只有管理员帐户应该能够从Fi
我使用这个firebase规则: 那么我需要更改firebase规则或更改编码吗?
我使用下面的firebase rest API访问firestore数据库数据 为了访问我的firestore数据库,我在关键部分使用了我的访问令牌,但我收到了来自firebase的电子邮件,称“[firebase]您的云firestore数据库有不安全的规则”。直到那时,我才发现任何人都可以访问我的数据库数据,即使没有有效的访问令牌 谢谢
目标:用户应可以访问已登录用户的文档。 集合结构: 我使用的Android代码 我尝试过的数据库规则: 我收到的错误: com.google.firebase.firestore。FirebaseFirestoreException:PERMISSION_DENIED:缺少权限或权限不足。 侦听查询(目标 = 查询(按名称的根顺序);limitType=LIMIT_TO_FIRST) 失败:状态{
我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息