如何限制 PostgreSQL/Supabase 中某些列的 RLS?

问题描述 投票:0回答:1

假设您有一个包含以下实体的 Supabase 数据库:

type Game = {
  id: number | null;
  is_finished: boolean;
  points: number;
};

经过身份验证的用户应该能够更改

is_finished
布尔值,但不能更改
points
列。有没有(简单)的方法来解决这个问题?

我目前通过添加一些 RLS 策略来限制未经身份验证的用户的访问,但我无法定义每列的策略。

database postgresql supabase row-level-security
1个回答
0
投票

常规权限系统可以做到这一点:
db<>fiddle 的演示

grant select,delete,insert,references(id,is_finished,points) on game to the_user;
grant update (id,is_finished) on game to the_user;

permissive
RLS 政策的工作原理类似,如果您首先/同时对表格的所有列设置
grant all
或个人权限,然后仅对该列设置
revoke update(points)
,则不会产生任何影响。列上的撤销和授权得到
OR
的有效利用,用户就可以进入。

© www.soinside.com 2019 - 2024. All rights reserved.