gpt4 book ai didi

firebase - Firestore 规则不适用于 userId

转载 作者:行者123 更新时间:2023-12-01 00:23:22 25 4
gpt4 key购买 nike

我有一个简单的用户集合,文档 id 使用名称字符串的 uid
enter image description here

我正在使用 angularfire2 连接到集合

this.users = afs.collection<User>('users').valueChanges();

我正在使用 Firebase 身份验证。显示用户 ID 时,我得到与用户文档匹配的 4NxoeUeB4OXverhHhiw86eKl0Sj1。
this.afAuth.authState.subscribe(auth => console.log(auth.uid));

我正在尝试为集合添加规则。如果我使用以下规则,则会出现缺少权限或权限不足的错误。
`service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}`

如果我将规则更改为 request.auth != null,则会显示数据。
`service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null;
}
}
}`

我可能做错了什么?我也在尝试一些不同的规则,例如。 resource.data.name != null .它也不起作用。

我正在测试规则。最终结果我想要一个 reader 数组字段和 writers 数组字段,所以我可以尝试类似 request.auth.uid in resource.data.readers 的内容。控制对文档的访问

最佳答案

您正在尝试获取 /users/*但您只能访问 /users/{yourid} .

您应该只检索您有权访问的数据,因此即使您实际上只有一个文档,您也需要过滤您的查询。

// either by adding a field in your doc
afs.collection('users', ref => ref.where('id', '==', auth.uid))

// or by getting the document directly
afs.collection('users').doc(auth.uid)

When performing a rules check on a query, Cloud Firestore Security Rules will check to ensure that the user has access to all results before executing the query. If a query could return results a user doesn't have access to, the entire query fails and Firestore returns an error.



来源: https://cloud.google.com/firestore/docs/security/secure-data#shallow_queries

关于firebase - Firestore 规则不适用于 userId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com