【发布时间】:2020-11-28 17:26:22
【问题描述】:
我有以下规则应该允许我阅读文档,但我收到权限不足错误。有什么建议吗?
当前用户在名为 users 的集合下有一个文档,其中包含一个名为 role 的字段,其值为 admin
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/tickets/{ticketId} {
allow update, delete, create: if false
allow read: if get(/users/$(request.auth.uid)).data.role == "admin"
}
match /users/{userId} {
allow delete:
if false
allow read, write:
if request.auth != null && request.auth.uid == userId
allow update:
if resource.data.points == request.resource.data.points && request.auth != null && request.auth.uid == userId
}
iOS 代码获取数据
func fetchTickets(contestId: String) -> SignalProducer<[Ticket], FetchError> {
Firestore.firestore()
.collection("users/*/tickets")
.whereField("contest.id", isEqualTo: contestId)
.getDocuments()
}
用户集合
{
"role": "admin"
}
users.{userId}.tickets 集合
{
"contest": {
"id": ""asdasd
}
}
【问题讨论】:
-
这里没有足够的信息。请编辑问题以显示所涉及的实际数据,以及执行被拒绝查询的客户端代码。我们需要查看整个系统中的数据流。
标签: ios google-cloud-firestore firebase-security