如何将Firebase存储规则部署到特定存储桶?

时间:2018-12-05 18:56:46

标签: firebase firebase-storage firebase-security-rules firebase-cli

我想知道存储规则在Firebase中的部署方式。

在Firebase Storage中,我有2个存储桶bundle install railsapp.appspot.com。在我的本地计算机上,我有一个app-mybucket文件,看起来像这样:

storage.rules

当我service firebase.storage { match /b/app.appspot.com/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } match /b/app-mybucket/o { match /{userId}/{allPaths=**} { allow read, write: if request.auth.uid == userId; } } } 时,这些规则将发送到默认的firebase deploy --only storage存储桶,而似乎没有任何内容发送到app.appshpot.com。我想知道一种可以将规则部署到所有存储桶的方法。

2 个答案:

答案 0 :(得分:1)

在firebase.json文件中,您可以指定以下内容:

  "storage": [{
    "rules": "my-appspot.rules",
    "bucket": "app.appspot.com"
  },
  {
    "rules": "my-bucket.rules",
    "bucket": "app-mybucket"
  }]

上面的示例对每个存储桶使用不同的规则,如果您愿意,也可以对每个存储桶使用相同的规则。

答案 1 :(得分:1)

您还可以使用部署目标。可以找到更多信息here

示例

  1. 使用CLI应用新目标(在本例中为“ main”)
firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja
  1. 更新firebase.json
{
  "storage": [ {
      "target": "main",  // "main" is the applied target name for the group of Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}
  1. 使用
firebase deploy --only storage:main