【问题标题】:Getting permission error when creating a Firestore document创建 Firestore 文档时出现权限错误
【发布时间】:2023-04-07 07:42:01
【问题描述】:

我正在尝试在不需要用户身份验证的情况下安全地创建 Firestore 文档,并为此定义了以下规则:

      allow create: if request.resource.data.deviceid == resource.id;

根据我从 Google 读到的内容,如果待处理的写入包含与文档 ID 匹配的名为“DeviceID”的字段,这应该允许创建文档,这就是我认为我正在做的事情(我确认androidID 与文档 ID 相同):

        data.put("DeviceID", androidID);
        mDevIDDocRef.set(data)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.d(TAG, "DocumentSnapshot successfully written!");
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                    public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "Error writing document", e);
                }
            });

但是,上述操作失败并出现权限异常。我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    在创建规则评估期间,资源尚不存在,因此您必须读取其未来值:request.resource.data.whatever
    要访问自动生成的文档 id,您需要从文档路径中读取它:

    match /myCollection/{docId} {
        allow create: if request.resource.data.deviceid == docId;
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 2023-04-09
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2021-04-10
      • 2017-08-15
      • 2012-11-08
      相关资源
      最近更新 更多