使用颤振(或 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 依赖项出现颤振问题
在我的颤振(android)应用程序中 - Firebase 推送通知在一段时间后停止接收每个用户