我正在尝试更改安全规则
match /{document=**} {
allow read, write;
}
仅允许经过身份验证的用户。
我将此规则更改为:
allow read, write: if request.auth != null;
它在“规则游乐场”中工作,但是当我运行该应用程序时,它给出以下错误:
`[WriteStream]: (c1114d) Stream closed with status: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}.
FirebaseFirestoreHostApi.documentReferenceSet
(package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart:1009:7)
<asynchronous suspension>
MethodChannelDocumentReference.set
(包:cloud_firestore_platform_interface/src/method_channel/method_channel_document_reference。dart:35:7) `
行动:
注意:我的数据库在我的一些集合中包含集合内的集合,因此,我将规则更改为:
此格式适用于仅包含文档的集合“count”
match /count/{document=**} { allow read; allow write: if request.auth.uid !=null; }
如果集合(评论)包含包含文档的子集合的文档,则采用此格式
` 匹配 /comments/{comments} {
允许读取;
允许写入: if request.auth.uid !=null;
match /comments/{comments} {
allow read;
allow write: if request.auth.uid !=null;
}
}`
我正在使用 Android Studio 和 Flutter。 如果上面的“if request.auth.uid !=null;”被替换为“true;”,一切正常,但不安全,因为即使未经身份验证的用户也可以写入数据库。
谢谢。 请帮忙!
首先,您需要确认用户已通过 Firebase 身份验证登录,如果您想保护所有 Firestore 文档,您可以使用此规则仅授予授权用户访问数据的权限
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}