You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Cloud Storage安全规则:限制自定义元数据键的正确方法

正确的Firebase存储规则配置方式

问题根源

你之前的规则失效是因为create操作时,目标资源尚未存在,resource.metadata为null,调用diff()方法会直接导致规则判断异常,最终触发权限拒绝。

两种场景的正确规则写法

场景1:必须携带a键,且不能存在其他自定义元数据键

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow create: if 
        request.resource.metadata != null &&
        request.resource.metadata.keys().hasOnly(['a']) &&
        request.resource.metadata.a != null; // 可选:确保a键有实际值
    }
  }
}

场景2:可选择不携带自定义元数据,若携带则只能包含a键

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow create: if 
        (request.resource.metadata == null) ||
        (request.resource.metadata.keys().hasOnly(['a']));
    }
  }
}

核心说明

  • request.resource.metadata:指向上传请求中附带的自定义元数据对象
  • keys():提取元数据对象的所有键集合
  • hasOnly(['a']):验证集合仅包含指定的键

内容的提问来源于stack exchange,提问作者Acid Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:20:54