创建 Firestore 文档时出现权限错误
Posted
技术标签:
【中文标题】创建 Firestore 文档时出现权限错误【英文标题】:Getting permission error when creating a Firestore document 【发布时间】:2020-12-19 14:21:36 【问题描述】:我正在尝试在不需要用户身份验证的情况下安全地创建 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);
);
但是,上述操作失败并出现权限异常。我做错了什么?
【问题讨论】:
【参考方案1】:在创建规则评估期间,资源尚不存在,因此您必须读取其未来值:request.resource.data.whatever 要访问自动生成的文档 id,您需要从文档路径中读取它:
match /myCollection/docId
allow create: if request.resource.data.deviceid == docId;
...
【讨论】:
以上是关于创建 Firestore 文档时出现权限错误的主要内容,如果未能解决你的问题,请参考以下文章
检索数据时出现 Vue/Firestore/Firebase 错误
在云功能上使用 Firestore SDK 时出现错误:无法编码类型
使用 firestore Firestore 时出现以下错误:错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state
使用 firestore 时出现以下错误错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state