.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, Dictionary
2 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
相关产品推荐
相关产品推荐

