【发布时间】:2021-07-24 02:00:28
【问题描述】:
我正在开发一个使用 Firestore 作为数据库的应用程序。我有一组管理员,其中文档的 id 是管理员的电子邮件地址。我想创建一个安全规则,它只允许管理员创建新文档。我目前的解决方案如下所示:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{collectionName}/{document=**} {
allow create: if exists(/databases/$(database)/documents/admins/$(request.auth.email));
}
}
}
但是当我尝试运行管理应用程序时,它会出现权限缺失或权限不足的错误。此外,当我尝试在规则游乐场中对其进行测试时,它会给出以下错误:
Error running simulation — Error: simulator.rules line [6], column [24]. Function not found error: Name: [exists].; Error: Invalid argument provided to call. Function: [exists], Argument: ["||invalid_argument||"]
据我了解,exists 函数不知何故丢失,文档 ID 无效,但为什么呢?这只是一个字符串,不是吗?
【问题讨论】:
-
试试这个:
$(request.auth.email).data
标签: firebase google-cloud-firestore firebase-authentication firebase-security