Supabase Backend as a Service · Pelajaran

Akses Berbasis Peran dengan RLS dan Klaim Khusus

Bangun kebijakan Keamanan Tingkat Baris yang canggih untuk memberikan akses berbeda berdasarkan peran pengguna menggunakan klaim JWT dan fungsi pembantu.

Pelajaran 3 dari 313 langkah

Akses Berbasis Peran dengan RLS dan Klaim Khusus adalah pelajaran Supabase Backend as a Service gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Supabase Backend as a Service, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Beyond Owner-Only Policies

Basic RLS often checks auth.uid() for ownership. Real apps also need role-based rules, like admins seeing everything and editors seeing more than viewers.

Where Roles Live

You can store roles in a column on a profiles table, or embed them as custom claims in the user's JWT for fast, joinless checks.

Reading the JWT in SQL

Supabase exposes the JWT via auth.jwt(). You can read custom claims from it.

-- returns the 'user_role' claim as text
select auth.jwt() ->> 'user_role';

A Role Helper Function

Wrap the claim read in a helper so policies stay readable.

create or replace function current_role_name()
returns text
language sql stable
as 'select coalesce(auth.jwt() ->> ''user_role'', ''viewer'')';

Admin-Sees-All Policy

Grant admins unrestricted read access while others are limited.

create policy admin_read on documents
for select
using (current_role_name() = 'admin');

Combining Ownership and Role

Policies can OR conditions: a user sees a row if they own it OR they are an admin.

create policy read_own_or_admin on documents
for select
using (
  owner_id = auth.uid()
  or current_role_name() = 'admin'
);

Separate Policies per Action

Define distinct policies for SELECT, INSERT, UPDATE, DELETE so each action has the right rule, for example editors can update but viewers cannot.

Modeling a Role Hierarchy

Map roles to permission levels so you can compare numerically.

function level(role) {
  return { viewer: 1, editor: 2, admin: 3 }[role] || 0;
}
console.log(level('editor') >= level('viewer'));

Setting Custom Claims

Custom claims are added to the JWT via an auth hook or by a trusted server using the admin API. Never let clients set their own role.

Security Reminders

Always keep RLS enabled on the table. Helper functions should be stable, and role logic must never trust client-supplied values directly.

Putting It Together

Combine ownership checks with role claims read from the JWT to express rich, secure access rules entirely in the database.

Quick Check

Test your understanding of role-based RLS.

Recap

You built role-based RLS using auth.jwt() custom claims, helper functions, combined ownership-or-role policies, per-action rules, and learned to set roles only on a trusted server.

Gratis untuk memulai

Belajar Supabase Backend as a Service dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
11
Pelajaran
40

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Akses Berbasis Peran dengan RLS dan Klaim Khusus” gratis?

Ya — teks lengkap “Akses Berbasis Peran dengan RLS dan Klaim Khusus” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Supabase Backend as a Service, upgrade ke CoddyKit PRO. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Akses Berbasis Peran dengan RLS dan Klaim Khusus”?

Bangun kebijakan Keamanan Tingkat Baris yang canggih untuk memberikan akses berbeda berdasarkan peran pengguna menggunakan klaim JWT dan fungsi pembantu. Kamu berlatih Supabase Backend as a Service dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Supabase Backend as a Service?

Tidak diperlukan pengalaman sebelumnya. Supabase Backend as a Service di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Akses Berbasis Peran dengan RLS dan Klaim Khusus” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Supabase Backend as a Service ini?

Ya. Setiap pelajaran Supabase Backend as a Service menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pengantar Kebijakan RLS
  2. Pengujian dan Penelusuran Kesalahan RLS
  3. Akses Berbasis Peran dengan RLS dan Klaim Khusus
← Kembali ke Supabase Backend as a Service