读取给定文档的简单安全规则

时间:2020-02-23 08:58:45

标签: firebase firebase-authentication firebase-security

由于访问简单的收藏集,我的模拟阅读被拒绝

Data Model:
/users/$userId/

这是一个简单的集合,没有子集合。

在模拟器中,我正在获取单个文档

/databases/users/documents/0011476476904

具有以下身份验证负载

{
  "uid": "0011476476904",
  "token": {
    "sub": "0011476476904",
    "email": "",
    "email_verified": false,
    "phone_number": "",
    "name": "",
    "firebase": {
      "sign_in_provider": "google.com"
    }
  }
}

如果auth.uid与userId匹配,我有一个简单的规则允许读取,但是我仍然拒绝模拟规则

rules_version = '2';
service cloud.firestore {
  match /databases/users/documents/{userId} {

      allow read, write: if userId == request.auth.uid;

  }
}

我设定规则的方式有什么问题吗?

1 个答案:

答案 0 :(得分:0)

如果您只有一个users集合,则应使用以下方法来建模/定义安全规则:

service cloud.firestore {
  match /databases/{database}/documents {

    // Match any document in the 'users' collection
    match /users/{userId} {
         allow read, write: if userId == request.auth.uid;
    }
  }
}

有关更多详细信息,请参见doc。另外,值得观看此文档page中嵌入的视频。