current_setting 是 PostgreSQL 原生就有的系统函数,用来读当前会话的 GUC (Grand Unified Configuration) 参数。它的签名大致是:

current_setting(setting_name text, missing_ok boolean DEFAULT false) RETURNS text

Supabase 利用这一点,在每次数据库连接上执行类似:

SET request.jwt.claims.sub = '<JWT 中的 sub 值>';

然后你在 RLS 里就可以这样写:

-- 读 sub Claim
(current_setting('request.jwt.claims.sub', true))::uuid

-- 或读自定义 Claim
(current_setting('jwt.claims.user_id', true))::uuid