Flutter Firebase 安全规则不起作用

问题描述 投票:0回答:1

我正在尝试更改安全规则

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;”,一切正常,但不安全,因为即使未经身份验证的用户也可以写入数据库。

谢谢。 请帮忙!

flutter firebase authentication rules
1个回答
0
投票

首先,您需要确认用户已通过 Firebase 身份验证登录,如果您想保护所有 Firestore 文档,您可以使用此规则仅授予授权用户访问数据的权限

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.