【问题标题】:Firebase Storage Rules using flutter (or Android)使用颤振(或 Android)的 Firebase 存储规则
【发布时间】: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 身份验证的用户也无法访问?

【问题讨论】:

    标签: firebase flutter firebase-authentication firebase-storage firebase-security


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,这很清楚。如果我不想完全访问我的数据,我应该使用什么?
    • 如果您需要共享 URL,则需要编写自己的后端 API,以某种方式检查是否允许发出请求的个人或实体这样做。
    猜你喜欢
    • 2021-11-13
    • 2017-08-11
    • 2019-06-07
    • 2022-01-17
    • 2021-04-03
    • 2021-04-07
    • 1970-01-01
    • 2021-01-03
    • 2020-11-28
    相关资源
    最近更新 更多