Firestore安全规则-找不到函数存在



我正在开发一个应用程序,它使用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无效,但为什么?这只是一根绳子,不是吗?

如果您试图获取与身份验证请求相关联的电子邮件,您必须这样做:CCD_ 1。您可以在此处查看有关Request.auth对象结构的详细信息。

在实时数据库中没有让用户成为Admin并赋予特殊权限的选项,我认为FireStore也是如此。

但你可以做的是在用户中添加一个类似userType的字段,并在管理员注册时给它值Admin,然后你可以基于它创建规则。

最新更新