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

Posted

技术标签:

【中文标题】使用颤振(或 Android)的 Firebase 存储规则【英文标题】:Firebase Storage Rules using flutter (or Android) 【发布时间】:2020-10-08 16:58:19 【问题描述】:

我将 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%2Fimage_name.jpg?alt=media&token=TOKEN 但我也可以使用照片的直接网址(不带令牌)并且效果很好。 例子: https://firebasestorage.googleapis.com/v0/b/project_name/o/images%2Fimage_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 (); 但我不能使用图片网址(硬编码)

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

感谢您的回复,这很清楚。如果我不想完全访问我的数据,我应该使用什么? 如果您需要共享 URL,则需要编写自己的后端 API,以某种方式检查是否允许发出请求的个人或实体这样做。

以上是关于使用颤振(或 Android)的 Firebase 存储规则的主要内容,如果未能解决你的问题,请参考以下文章

依赖项升级后 Android Firebase 依赖项出现颤振问题

Firebase颤振推送通知不适用于Android

在我的颤振(android)应用程序中 - Firebase 推送通知在一段时间后停止接收每个用户

使用或覆盖已弃用的 API 颤振

如何调试 iOS 不接收推送通知(使用 firebase_messaging 的颤振)?

提取 sha-1 和 sha-256 密钥以使用颤振和 firebase 发布 apk