Я получаю эту ошибку при загрузке файлов в хранилище Supabase, снова хранилище Supabase не является таблицей:
новая строка нарушает политику безопасности на уровне строки
Это код, который я использую в .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;
}
}
Это полная ошибка с подробным исключением:
новая строка нарушает политику безопасности на уровне строк в Supabase.Storage.Extensions.HttpClientProgress.UploadAsync(HttpClient client, Uri uri, поток потока, заголовки Dictionary`2, прогресс`1) в Supabase.Storage.StorageFileApi.UploadOrUpdate(Byte[] данные
Я попытался добавить новую политику, которая позволяет только аутентифицированному пользователю {SELECT, UPDATE, DELETE, UPDATE}, но все равно это не сработало:
не могли бы вы поделиться подробностями или кодом, который вы использовали для добавления новой политики?
@EspressoCode Я не писал никакого кода, просто использовал существующую политику «Предоставлять пользователям доступ к папке только прошедшим проверку подлинности пользователям».
@Верхом. это обсуждение на GitHub помогло, можете ли вы добавить его в качестве ответа, я выполнил два запроса, приведенных в этом ответе





Вопрос о том, что новая строка нарушает политику безопасности на уровне строк, был задан пользователем lucasmrl на сайте Supabase на GitHub в 2021 году . lucasmrl ответил на свой вопрос, предоставив некоторую информацию и предложение, как справиться с ситуацией. Может быть, этот пост окажется полезным?
Подвести итог:
const { data, error } = await supabase.storage
.from("bucket ID")
.upload("file name", file, { cacheControl: "3600" });
«новая строка нарушает политику безопасности на уровне строк для объектов таблицы» statusCode: «42501»
Даже если корзина является «общедоступной», вам все равно необходимо настроить политики.
Чтобы позволить людям ПРОСМОТРИТЬ файлы в корзине и ЗАГРУЗИТЬ файлы в корзину, выполните следующие SQL-запросы:
ПРОСМОТР: создать
selectполитику
create policy "Public Access Bucket Images Get"
on storage.objects for select
using ( bucket_id = 'bucket ID' );
ЗАГРУЗИТЬ: создать
insertполитику
create policy "Public Access Bucket Images Post"
on storage.objects for insert
with check ( bucket_id = 'bucket ID' );
Подробнее о создании политик в Supabase в документации.
Может ли этот ответ GitHub помочь? github.com/orgs/supabase/discussions/…