基于角色的FireStore访问

时间:2020-04-21 19:06:21

标签: firebase google-cloud-firestore firebase-security

我正在尝试实现对Firebase Firestore的基于角色的访问,但是尽管我查看了Google出色的文档,但无法使其正常运行。 我在每个用户文档中都设置了一个字符串“ role”。该文档本身具有用户的uid。

我访问用户集合的规则如下所示,并且写入规则一定是错误的:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{document} {
      allow read: if get(/databases/$(database)/documents/users/$(request.auth.id)/role/$(role)) == "Mitarbeiter"
   }
  }
}

FireStore

XCode控制台错误:

[Firebase/Firestore][I-FST000001] Listen for query at users/EStQNC4cYcaSnKpxs4XnQf96brm2 failed: Missing or insufficient permissions.

1 个答案:

答案 0 :(得分:1)

文档get()的路径正在一个名为“角色”的子集合中,但是您没有:

/users/$(request.auth.id)/role/$(role)

此外,您没有我们可以在此处看到的名为“角色”的变量。

使用显示的内容,看起来所需的角色是文档本身,因此不需要get()。只需像这样检查它即可:

allow read: if resource.data.role == "Mitarbeiter";
相关问题