错误[firebase.firestore] FirebaseError:缺少权限或权限不足。
我有一个允许几个用户更新的对象。管理员将设置他们的电子邮件,并且使用这些电子邮件登录的这些用户将被允许更新。
这些是我尝试过的规则:
allow update: if request.resource.data.managerEmails.val().contains(request.auth.email) && request.resource.data.id == resource.data.id;
allow update: if request.resource.data.managerEmails.contains(request.auth.email) && request.resource.data.id == resource.data.id;
allow update: if request.resource.data.managerEmails.includes(request.auth.email) && request.resource.data.id == resource.data.id;
要更新的资源:
{
id: "someid",
...fields,
managerEmails: "abcde@email.com,anothermanager@email.com",
}
正在更新的用户身份验证:
{
uid: "rSTLnYD9aisyZJHQPC6sg7mlsZh1",
email: "abcde@email.com",
...
}
更新:
使用request.auth.uid
可以在其他规则中使用,但是在这种情况下,我必须使用电子邮件,因为用户可能尚未注册。
在规则操场上,我得到Property email is undefined on object.
也许无法使用request.auth.email
?
答案 0 :(得分:0)
我强烈建议您做两件事。
首先,存储UID而不是电子邮件地址。 UID是识别单个Firebase Auth帐户的首选方法,并且始终保证存在并且唯一。电子邮件地址不是。
第二,将用户列表存储为数组类型字段而不是逗号分隔的字符串。总体而言,这将更容易管理。
完成这两件事后,规则变得简单了:
p_j
答案 1 :(得分:0)
我遇到了同样的问题,但是从使用firebase.auth.email切换到firebase.auth.token.email,现在可以使用了。