Firebase数据库安全规则,检查resource.data中的auth.email

Jin*_*les 3 firebase firebase-security google-cloud-firestore

错误 [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;
Run Code Online (Sandbox Code Playgroud)

要更新的资源:

{
  id: "someid",
  ...fields,
  managerEmails: "abcde@email.com,anothermanager@email.com",
}
Run Code Online (Sandbox Code Playgroud)

正在更新的用户身份验证:

{
  uid: "rSTLnYD9aisyZJHQPC6sg7mlsZh1",
  email: "abcde@email.com",
  ...
}
Run Code Online (Sandbox Code Playgroud)

更新:使用request.auth.uid在其他规则中一直有效,但在这种情况下,我必须使用电子邮件,因为用户可能还没有注册。

使用规则游乐场,我得到Property email is undefined on object.也许使用request.auth.email是不可能的?

Lui*_*esi 8

使用:request.auth.token.email插入 request.auth.email

文档在这里