You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase策略配置:允许仅更新Events表特定列的权限设置

解决方案

需求回顾

需要实现Supabase行级安全策略,满足:

  • 所有已认证用户可更新events表的attendees_count列(无论是否为事件创建者)
  • 非事件创建者无法修改events表的其他任何列

策略编写

你需要创建两个互补的更新策略,结合使用来实现需求:

-- 策略1:允许事件创建者修改自身事件的所有列
create policy "事件创建者可全量更新事件" on "public"."events" as permissive
for update
  to authenticated
using ((auth.uid() = created_by))
with check ((auth.uid() = created_by));

-- 策略2:允许所有认证用户仅更新参会人数统计列
create policy "认证用户可更新参会人数" on "public"."events" as permissive
for update
  to authenticated
using (true)
with check (
  -- 确保除attendees_count外,其他列与原数据完全一致
  old.* is not distinct from new.* except for attendees_count
);

策略说明

  1. 事件创建者全量更新策略:和你提供的示例逻辑一致,仅允许事件的创建者(created_by字段匹配当前用户ID)修改该事件的所有字段。
  2. 参会人数专用更新策略:
    • using (true) 放开了所有已认证用户的更新权限范围
    • with check 子句通过对比新旧行数据,强制要求除attendees_count外的所有字段必须保持原值,彻底限制了非创建者只能修改参会人数这一列。

Supabase的行级安全策略是累加生效的,只要满足任意一个策略的条件,操作就会被允许。因此:

  • 事件创建者可以通过第一个策略修改所有字段,也能通过第二个策略单独更新参会人数
  • 非创建者只能通过第二个策略修改参会人数,无法触碰其他字段

内容的提问来源于stack exchange,提问作者Kitani Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:52:36