防止根据 firebase 中的用户类型写入文档?

prevent writings to document depending on user type in firebase?

我在这个集合中有一个名为 shared 的集合我将有一个文档作为管理员和客户之间的连接(这样客户可以推送他们的在线状态,管理员也是如此),我想要做的是一个安全规则,只允许管理员修改他的文件 (在线管理员:正确)

和客户仅修改他们的文档(onlineClients:{clientID:true})。 这可以使用规则来完成吗?如果是这样,如何限制对每种用户类型的写入以及在这种情况下取​​决于什么?

Doc Model

是的,这完全有可能,并且在 role based access control 上的 Firebase 文档中涵盖得很好。当您在 Firestore 文档中定义角色时,这些示例规则来自于这些示例规则:

service cloud.firestore {
  match /databases/{database}/documents {
    // For attribute-based access control, Check a boolean `admin` attribute
    allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;
    allow read: true;

    // Alterntatively, for role-based access, assign specific roles to users
    match /some_collection/{document} {
     allow read: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Reader"
     allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Writer"
   }
  }
}

以及在自定义属性中定义角色时的这些规则:

service cloud.firestore {
  match /databases/{database}/documents {
    // For attribute-based access control, check for an admin claim
    allow write: if request.auth.token.admin == true;
    allow read: true;

    // Alterntatively, for role-based access, assign specific roles to users
    match /some_collection/{document} {
     allow read: if request.auth.token.reader == "true";
     allow write: if request.auth.token.writer == "true";
   }
  }
}

我还建议您观看 Firebase 专家关于该主题的视频:Implementing Authorization Models