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

Firebase Storage权限问题:验证码图片无法访问(storage.objects.get被拒)

解决Firebase Storage验证码图片匿名访问权限问题

问题根源分析

你的验证码场景是匿名用户访问,但修改后的Storage规则要求request.auth.uid != null(即必须登录才能读取),这直接和需求冲突,导致匿名请求被拒绝。另外,你添加的「Storage Object Viewer」是IAM角色,作用于服务账号/IAM用户,而非前端匿名用户的访问控制,所以对当前场景无效。

解决方案

1. 调整Storage规则,允许匿名读取验证码图片

为兼顾安全,建议仅开放验证码图片所在的特定路径,而非全局开放所有存储资源。假设你的验证码图片存在captcha目录下,规则修改如下:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    // 仅允许匿名读取captcha目录下的所有文件
    match /captcha/{allPaths=**} {
      allow read: if true;
    }
    // 其他路径保持原有安全规则
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

如果需要临时测试全局匿名读取(不推荐生产环境),可以用:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if true;
      allow write: if false;
    }
  }
}

2. 确认规则生效

修改规则后,点击Firebase控制台中的「发布」按钮,等待1-2分钟让规则生效,再测试图片访问。

3. 关于IAM角色的正确使用场景

「Storage Object Viewer」角色适用于:

  • 后端服务账号需要读取Storage资源
  • IAM用户(比如开发者)需要通过GCP控制台或API访问存储资源
    不适用于前端匿名用户的访问控制,这类场景必须通过Firebase Storage规则来配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:14