代码= PERMISSION_DENIED,描述=缺少权限或权限不足,原因=空

时间:2019-10-15 00:31:52

标签: flutter firebase-security

我无法在规则到位的情况下读写数据到Firestore。

我可以访问我的数据并对其进行操作,而无需设置如下所示的规则:

match /{document=**} {
  allow read, write: if true;
}

但是我得到了以下规则的“权限被拒绝”错误。

match /{document=**} {
  allow read, write: if request.auth.uid != null;
}

这是我的飞镖代码:

if (uid == null) {
  user = await a.currentUser();
  uid = user.uid;
}
DocumentReference docRef = firestore.collection('users').document(uid);
CollectionReference locations = docRef.collection('locations');


await locations.document().setData(<String, double>{
  'latitude': latitude,
  'longitude': longitude,
});

我可以想到此请求失败的两种情况:

  1. request.auth.uid == null。但是我有一个用户在此查询之前使用firebase auth登录。
  2. 我的安全规则和查询不匹配。

请帮助我调试此问题。

编辑1:

  1. 我在Firebase查询期间对用户进行了身份验证,因为我将代码更改为仅在按以下方式对用户进行身份验证时才输入:
    User u = await a.onAuthStateChanged.first;

    if (u != null) {....}
  1. 我能够使用Firebase模拟器通过身份验证进行读取/写入。

我是否可以使用cloud_firestore软件包打印从dart发送到Firebase的实际请求?

编辑2

  1. Firestore.instance正在使用规则
  2. 使用configure将Firebaseapp配置为我的特定应用程序,选项不起作用。

对于为什么会发生这种情况有任何帮助吗?

2 个答案:

答案 0 :(得分:1)

如果要允许任何人上传文档,只需将规则更改为以下内容。

allow read, write;

如果您只允许经过身份验证的用户允许将文件或文档上传到Firebase,请将规则更改为

allow read, write: if request.auth != null;

答案 1 :(得分:0)

将规则更改为allow read,write: if request.auth !=null;