gpt4 book ai didi

firebase - Firestore 的规则,强制用户编写 id 等于其自己的 uid 的文档

转载 作者:行者123 更新时间:2023-12-02 06:49:05 25 4
gpt4 key购买 nike

我想保证用户只能添加与其 auth.uid 具有相同 id 的文档。

例如,ID 为 1X0T6xC6hhRN5H02zLCN6SQtwby2 的用户只能创建/更新文档/salesmen/1X0T6xC6hhRN5H02zLCN6SQtwby2 。

在应用级别,通过以下命令完成(创建和更新)。

 this.db
.collection("salesmen")
.doc(user.uid)
.set(data)
.then(function() { //...

在 Firestore 级别,我正在尝试以下规则,但它不起作用(导致 写入文档时出错:错误:权限缺失或权限不足。)。

match /salesmen/{salesman} {
allow read: if true;
allow write: if request.auth != null && resource.id == request.auth.uid;
}

如何执行这条规则?

最佳答案

resource.id 只能用于引用 Firestore 中的现有文档。如果正在编写的文档尚不存在,则它不起作用。

相反,您可以在匹配表达式中使用 salesman 通配符来确定用户是否可以编写特定文档,即使它尚不存在:

match /salesmen/{salesman} {
allow read: if true;
allow write: if request.auth != null && salesman == request.auth.uid;
}

看来您也可以使用 request.resource.id 来引用可能尚未写入的文档的 id:

match /salesmen/{salesman} {
allow read: if true;
allow write: if request.auth != null && request.resource.id == request.auth.uid;
}

虽然我在 reference documentation 中找不到明确讨论的内容到现在为止。

关于firebase - Firestore 的规则,强制用户编写 id 等于其自己的 uid 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603701/

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