如何将 Firebase 存储规则部署到特定的存储桶?
How to deploy Firebase Storage rules to specific buckets?
我想知道存储规则部署在 Firebase 中的工作原理。
在 Firebase 存储中,我有 2 个存储桶 app.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
存储桶时,似乎没有任何内容发送到 app-mybucket
。我想知道一种可以将规则部署到所有存储桶的方法。
在您的 firebase.json 文件中,您可以指定如下内容:
"storage": [{
"rules": "my-appspot.rules",
"bucket": "app.appspot.com"
},
{
"rules": "my-bucket.rules",
"bucket": "app-mybucket"
}]
上面的示例对每个存储桶使用了不同的规则,如果您愿意,您也可以对每个存储桶使用相同的规则。
您也可以使用部署目标。可以找到更多信息 here。
例子
- 使用 CLI 应用新目标(在本例中为“main”)
firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja
- 更新
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
}
]
}
- 使用
firebase deploy --only storage:main
我想知道存储规则部署在 Firebase 中的工作原理。
在 Firebase 存储中,我有 2 个存储桶 app.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
存储桶时,似乎没有任何内容发送到 app-mybucket
。我想知道一种可以将规则部署到所有存储桶的方法。
在您的 firebase.json 文件中,您可以指定如下内容:
"storage": [{
"rules": "my-appspot.rules",
"bucket": "app.appspot.com"
},
{
"rules": "my-bucket.rules",
"bucket": "app-mybucket"
}]
上面的示例对每个存储桶使用了不同的规则,如果您愿意,您也可以对每个存储桶使用相同的规则。
您也可以使用部署目标。可以找到更多信息 here。
例子
- 使用 CLI 应用新目标(在本例中为“main”)
firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja
- 更新
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
}
]
}
- 使用
firebase deploy --only storage:main