尝试仅添加到用户时,会不断丢失权限

时间:2018-08-12 19:00:39

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

我试图仅允许对用户UID进行读/写,但是脚本不断说缺少权限,请帮忙。

非常感谢`

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid == userId;
    }
  }
}
db.collection('users').doc(userId).collection('details').add(...

2 个答案:

答案 0 :(得分:1)

您编写的规则仅匹配集合中直接称为“用户”的文档。但是,您正在尝试访问“用户”下文档的子集合中的文档。

documentation非常具体地解决了这种情况,因此请务必阅读并了解层次结构数据如何用于安全规则。

如果您要对集合中的 all 个文档应用按用户规则,并在 all 嵌套子集合中的 all 文档中应用该规则文档,您可以简单地说:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth.uid == userId;
      match /{document=**} {
          allow read: if request.auth.uid == userId;
      }
    }
  }
}

请注意,匹配项必须像这样嵌套,才能使用外部匹配项中的userId通配符。

答案 1 :(得分:0)

可能您忘记了在Firebase控制台中启用登录提供程序。enter image description here