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

.NET API 上传文件至Supabase存储触发行级安全策略违规错误

使用.NET API上传文件到Supabase存储触发行级安全策略错误

错误信息

new row violates row-level security policy

使用的.NET代码

internal sealed class StorageRepository : IStorageRepository
{
    private readonly Client _client;

    public StorageRepository(Client client)
    {
        _client = client;
    }

    
    public async Task<string> SaveFileAsync(
       byte[] file,
       string identifier,
       string bucketName)
    {

        var result = await _client
                .Storage
                .From(bucketName)
                .Upload(
                     data: file,
                     supabasePath: identifier);

        return result;
    }
}

完整异常栈

new row violates row-level security policy at Supabase.Storage.Extensions.HttpClientProgress.UploadAsync(HttpClient client, Uri uri, Stream stream, Dictionary2 headers, Progress1 progress) at Supabase.Storage.StorageFileApi.UploadOrUpdate(Byte[] data

已尝试的操作

已添加允许已认证用户执行SELECT、UPDATE、DELETE操作的策略,但问题仍未解决:
策略配置截图


解决建议

1. 补充INSERT权限到策略中

上传文件本质是向storage.objects表插入新记录,你当前的策略缺少INSERT操作权限,必须把INSERT加入到允许的操作列表中。

2. 验证策略条件是否匹配认证场景

  • 如果是已认证用户上传:确认策略条件为auth.role() = 'authenticated',且客户端在上传前已完成用户登录;
  • 如果是匿名上传:需要将策略角色改为anon,同时在存储桶设置中开启"公共访问"。

3. 检查客户端认证状态

在调用SaveFileAsync前,通过_client.Auth.CurrentUser确认当前存在有效的用户会话,确保请求携带了正确的认证令牌。

4. 验证策略是否应用到正确的表

确保策略是创建在storage.objects表上,而非其他数据表——Supabase存储的权限控制完全依赖该表的行级安全策略。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:57:43