← Kembali ke artikel
Tips Debug RLS Supabase yang Sering Bikin Pusing
Muhammad Rifqi
29 September 2026

Query kamu benar, tapi hasilnya kosong. Sembilan dari sepuluh kali penyebabnya RLS.
RLS bekerja seperti yang seharusnya: diam. Query tidak error, ia hanya mengembalikan nol baris. Itu yang membuatnya sulit dilacak.
Menguji sebagai pengguna nyata
Jangan menguji sebagai postgres — role itu melewati RLS. Uji dengan role aplikasi:
set role authenticated;
set request.jwt.claims = '{"sub":"<user-uuid>"}';
select * from posts;
reset role;
Kebiasaan yang membantu
- Jalankan
select * from pg_policies where tablename = 'posts';dan baca ulang predikatnya, jangan hanya namanya. - Tulis satu policy per operasi.
FOR ALL USING (...)sering bocor karena bagianWITH CHECK-nya lupa diisi. - Ingat grant tabel. RLS tidak berguna kalau role-nya memang belum punya
SELECT. Dua lapis ini harus benar keduanya. - Kolom sensitif bisa dicabut.
revoke select (email) on users from anonmembuatselect \*dijawab error — dan itu memang tujuannya.
Kesimpulan
RLS bukan penghalang; ia hanya tidak memberi tahu kenapa query-mu kosong. Biasakan menguji dengan role yang sama seperti pengguna, dan sebagian besar kebingungan ini hilang.