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

Supabase公共存储桶上传文件失败 报objects表RLS策略违规错误

错误关联判断

这个报错和你做的文件base64编码、上传前解码操作完全无关。返回内容里的Invalid JWT是Supabase Storage的误导性提示,真正触发拦截的原因是storage.objects表的行级安全(RLS)策略校验不通过,文件内容的转码逻辑不会触发表级的权限校验规则。

现有策略的配置缺失

你当前只配置了(bucket_id = 'trycoin'::text)作为insert、select策略的判断条件,不足以满足公共上传的校验要求,缺以下配置:

  • 确认策略的适配角色:公共匿名访问的策略必须把授权角色设置为anon,如果只给已登录用户对应的authenticated角色配置了策略,匿名上传请求会直接被拦截。
  • Insert策略不能只校验bucket_id字段,必须补充文件路径字段的非空判断,符合要求的insert策略完整判断条件为:
bucket_id = 'trycoin' AND name IS NOT NULL
  • 不要遗漏存储桶本身的权限配置:绝大多数人卡在这里——只给storage.objects表加了策略,忘了给storage.buckets表加对应权限。匿名角色必须拥有trycoin桶的查询权限,否则RLS校验时无法识别桶的公开属性,会直接抛错。需要给storage.buckets表新增一条面向anon角色的select策略,判断条件为:
id = 'trycoin'
  • 配置策略时不要额外限制metadata字段写入:如果上传时自动携带了MIME类型、缓存规则等元数据,策略里加了metadata字段的限制条件也会触发拦截。
兜底排查项

补完上述配置仍报错的话,逐一核对以下设置:

  • 确认trycoin存储桶本身是公开桶,没有开启「禁止公共写入」的桶级限制。
  • 检查策略的授权动作是否匹配:insert策略必须勾选INSERT权限,select策略必须勾选SELECT权限,不要出现动作错配。
  • 核对请求里携带的anon key是否和项目后台生成的密钥一致,密钥拼写错误也会返回同类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:57:21