假设您有一个包含以下实体的 Supabase 数据库:
type Game = {
id: number | null;
is_finished: boolean;
points: number;
};
经过身份验证的用户应该能够更改
is_finished
布尔值,但不能更改 points
列。有没有(简单)的方法来解决这个问题?
我目前通过添加一些 RLS 策略来限制未经身份验证的用户的访问,但我无法定义每列的策略。
常规权限系统可以做到这一点:
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
的有效利用,用户就可以进入。