提问者:小点点

使用flutter(或Android)的Firebase存储规则


我将flutter与Firebase一起使用来保存我的图像,并且我将我的应用程序用作经过身份验证的Firebase用户。

规则第一个用例:

rules_version = '2';
firebase.storage service {
   match / b / {bucket} / o {
     match / {allPaths = **} {
       allow read, write: if true;
     }
   }
}

在这里,为了显示图像,我可以使用照片的下载网址:
await ref. getDownloadURL();
示例:https://firebasestorage.googleapis.com/v0/b/project_name/o/images/image_name.jpg?alt=media

规则第二个用例:

rules_version = '2';
firebase.storage service {
   match / b / {bucket} / o {
     match / {allPaths = **} {
       allow read, write: if request.auth! = null;
     }
   }
}

在这里我可以使用await ref. getDownloadURL();但我不能使用图像url(硬编码)

我的问题:
如果ref. getDownloadURL()即使在私人浏览器中也可以访问,并且不需要经过身份验证的用户,但是即使您是Firebase身份验证的用户,也无法访问图像的url(没有令牌),为什么我们使用Firebase存储规则(if request.auth!=null;)?


共1个答案

匿名用户

这就是下载URL的工作方式。它们旨在绕过所有安全规则。规则仅适用于使用FirebaseSDK读写存储桶中数据的Web和移动应用程序中运行的代码。如果您不想完全公开访问文件,请不要使用下载URL。