Supabase Backend as a Service · Урок

Доступ на основе ролей с помощью RLS и пользовательских утверждений

Создавайте продвинутые политики безопасности на уровне строк, предоставляя разный доступ пользователям с разными ролями с помощью утверждений JWT и вспомогательных функций.

Урок 3 из 313 шагов

«Доступ на основе ролей с помощью RLS и пользовательских утверждений» — бесплатный урок Supabase Backend as a Service на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Supabase Backend as a Service, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Supabase Backend as a Service содержит 3 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

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.

Можно начать бесплатно

Изучай Supabase Backend as a Service с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
11
Уроки
40

Часто задаваемые вопросы

Урок «Доступ на основе ролей с помощью RLS и пользовательских утверждений» бесплатный?

Да — полный текст урока «Доступ на основе ролей с помощью RLS и пользовательских утверждений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Supabase Backend as a Service, подпишись на CoddyKit PRO. Курс Supabase Backend as a Service содержит 3 уроков всего.

Чему я научусь в уроке «Доступ на основе ролей с помощью RLS и пользовательских утверждений»?

Создавайте продвинутые политики безопасности на уровне строк, предоставляя разный доступ пользователям с разными ролями с помощью утверждений JWT и вспомогательных функций. Ты практикуешь Supabase Backend as a Service с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Supabase Backend as a Service?

Предыдущий опыт не требуется. Supabase Backend as a Service на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Доступ на основе ролей с помощью RLS и пользовательских утверждений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Supabase Backend as a Service?

Да. Каждый урок Supabase Backend as a Service включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в политики RLS
  2. Тестирование и отладка RLS
  3. Доступ на основе ролей с помощью RLS и пользовательских утверждений
← Назад к Supabase Backend as a Service