Firebase 谷歌云Firestore安全规则-文档ID规则

Firebase 谷歌云Firestore安全规则-文档ID规则,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,如果我们基于Firebase身份验证用户ID创建新的文档ID(这样我们就不需要直接从已知用户ID查询和获取文档),我们是否可以创建一个安全规则,只允许拥有此类Firebase身份验证用户ID的用户创建具有此类用户ID的文档ID?比如, We have two users as follows:- Firebase user ID: AAA Firebase user ID: BBB Expected results from Firestore security rules AAA cre

如果我们基于Firebase身份验证用户ID创建新的文档ID(这样我们就不需要直接从已知用户ID查询和获取文档),我们是否可以创建一个安全规则,只允许拥有此类Firebase身份验证用户ID的用户创建具有此类用户ID的文档ID?比如,

We have two users as follows:-

Firebase user ID: AAA
Firebase user ID: BBB

Expected results from Firestore security rules

AAA creates document ID: AAA-1 - (ok)
AAA creates document ID: AAA-2 - (ok)
AAA creates document ID: BBB-1 - (not ok)
AAA creates document ID: XYZ-1 - (not ok)

BBB creates document ID: AAA-1 - (not ok)
BBB creates document ID: AAA-2 - (not ok)
BBB creates document ID: BBB-1 - (ok)
BBB creates document ID: XYZ-1 - (not ok)

我们可以在Firestore上设置这种规则吗?

最好在文档上添加一个所有者字段,将创建文档的用户id分配给该字段,然后在更新时检查该字段

allow update: if resource.data.owner == request.auth.uid

最好在文档上添加一个所有者字段,将创建文档的用户id分配给该字段,然后在更新时检查该字段

allow update: if resource.data.owner == request.auth.uid

您可以使用
request.resource.id
根据请求获取请求的目标文档id。然后,您可以将其与请求身份验证用户id进行比较,类似于
allow create:if request.resource.id==request.auth.uid
,以限制权限。

您可以根据。然后,您可以将其与请求身份验证用户id进行比较,类似于
allow create:if request.resource.id==request.auth.uid
,以限制权限。

如果将用户id保存在文档上,则这是一项简单的任务。既然您可以访问安全规则中的用户ID,那么如果用户在浏览器上覆盖文档ID,您会做什么?您也会编写安全规则来禁止这样做。您找到解决方案了吗?我也遇到了同样的问题,如果您将用户id保存在文档中,那么这是一项简单的任务。既然您可以访问安全规则中的用户ID,那么如果用户在浏览器上覆盖文档ID,您会做什么?您也会编写安全规则来禁止这样做。您找到解决方案了吗?我在模拟器中遇到了同样的问题,创建操作失败,尽管它在更新或删除操作中运行良好。在模拟器中,创建操作失败,尽管它在更新或删除操作中运行良好