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

Firebase Storage安全规则.matches(regex)失效问题求助

Firebase Storage安全规则正则匹配问题解决

问题根源

错误源于正则字符串的转义处理不当,以及正则未覆盖完整文件名匹配逻辑:

  • Firebase Storage规则的字符串中,反斜杠需要双转义(\\)才能被识别为正则的转义符,原正则里的\.会被解析器误判,引发语法报错
  • 原正则未添加$结尾,无法确保严格匹配数字.jpg格式(比如12.jpg会被误匹配)

修正后的完整规则代码

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /photos/{uid} {
      match /profile_photos/{image} {
        allow read: if isUserIsAuth();
        allow write: if isUserIsAuth() && isUserOwner(uid) && 
          image.matches('^[0-9]\\.jpg$');
      }
    }
  }
}

function isUserIsAuth() {
  return request.auth != null && 
    (request.auth.token.email_verified || 
     request.auth.token.firebase.sign_in_provider == "anonymous");
}

function isUserOwner(userID) {
  return request.auth.uid == userID;
}

修改说明

  1. 正则修正:将'^[0-9]\.jpg'改为'^[0-9]\\.jpg$'
    • \\.:正确转义小数点,避免解析器识别错误
    • $:确保文件名以.jpg结尾,严格匹配0.jpg到9.jpg的目标格式
  2. 逻辑优化:给isUserIsAuth函数的条件添加括号,明确逻辑优先级(&&优先级高于||,不加括号会导致判断逻辑偏离预期)
  3. 格式调整:统一缩进,提升代码可读性

内容的提问来源于stack exchange,提问作者Kaleb Schmottlach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:36:32