【问题标题】:Firebase storage.rules version 2Firebase storage.rules 版本 2
【发布时间】:2020-06-19 17:26:18
【问题描述】:

今天部署时,我注意到以下警告:

i  firebase.storage: checking storage.rules for compilation errors...
⚠  [W] undefined:undefined - Ruleset uses old version (version [1]). Please update to the latest version (version [2]).
✔  firebase.storage: rules file storage.rules compiled successfully

我假设 storage.rules 从 v1 到 v2 的更改匹配 those of firestore.rules,但我想确认这一点。但是,我可以找到的所有 storage.rules 文档都没有提及此文件的规则版本。

我的假设正确吗?

请注意,问题不是“当前版本是什么”,而是“描述与先前版本相比的更改的文档在哪里”。

【问题讨论】:

    标签: firebase firebase-storage firebase-security


    【解决方案1】:

    https://firebase.google.com/docs/rules/rules-language

    Firebase 安全规则利用支持各种复杂性和粒度的灵活、强大的自定义语言。您可以将规则设为对您的应用有意义的具体或一般规则。实时数据库规则使用类似于 JSON 结构中的 JavaScript 的语法。 Cloud Firestore 和 Cloud Storage 规则使用基于通用表达式语言 (CEL) 的语言,该语言以 CEL 为基础,具有匹配并允许支持有条件授予访问权限的语句。

    语法语句指示用于编写源代码的 Firebase 规则语言的版本。该语言的最新版本是 v2。

    如果没有提供 rules_version 语句,您的规则将使用 v1 引擎进行评估。

    Cloud Firestore 和 Cloud Storage 规则使用相同的 Firebase 规则语言。

    您可以使用 rules_version 语句指定 Firebase 规则语言的版本。

    rules_version = '2';
    service firebase.storage {
      // Your 'match' blocks with their corresponding 'allow' statements and
      // optional 'function' declarations are contained here
    }
    

    【讨论】:

    • 这没有回答问题。问题不是“我如何指定要使用的规则版本”,而是“规则文件的语义如何从 v1 更改为 v2?”。对于从firestore.rules 的 v1 到 v2 的更改,有所有更改(尽管很少)的明确文档,但 no 文档说明了storage.rules 中的版本更改是相同还是不同。因为这些是安全规则,所以我必须先了解它们之间的区别,然后才能将它们合理地应用到我的应用程序中。
    • 对不起,我不知道描述从以前版本的变化的文档。我认为 storage.rules 中的版本更改是相同的。但 Cloud Firestore 和 Cloud Storage 规则使用相同的 Firebase 规则语言。
    • 是的,我也被困在那里......我找不到任何关于 storage.rules 变化的信息,所以我只能假设它是一样的......但如果我错了,影响太冒险了...不能承受意外访问部分存储的后果:)
    猜你喜欢
    • 2016-09-15
    • 2016-09-17
    • 2018-12-17
    • 2020-04-07
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多