我分享了这篇文章ð,它比我预期的更加关注(考虑到我的常规标准ð)。这是一切如何融合在一起的细分。
1.定义角色
对于更具人为友好的角色的方法,您可以创建自定义枚举类型:
CREATE TYPE user_role AS ENUM ('spots_moderator', 'admin');
2.设置user_roles表
user_roles
表使我们能够将角色与用户联系起来。为确保用户_roles的安全性,启用行级安全性(RLS)并实施策略:
保护user_roles启用RLS(行级安全)并添加以下策略auth.uid() = user_id
此策略授予身份验证的用户访问他们所拥有的角色。
关键点:
-
user_id
参考auth.users.id
- 该角色基于
user_role
类型(步骤1的枚举类型。) - RLS可以阅读用户拥有的角色
3.实施针对特定角色访问的行级安全性
现在,您可以通过具有特定角色的用户来控制表中对表中特定行的访问,例如spot_proposals
。这是通过指定以下RLS条件来完成的:
(auth.uid() IN ( SELECT user_roles.user_id
FROM user_roles
WHERE (user_roles.role = 'spots_moderator'::user_role)))
关键点:
-
user_roles
具有RLS策略,允许身份验证的用户阅读其角色 - 关于
spot_proposals
的RLS政策限制了对特定角色的访问,例如spots_moderator
此设置可确保Supabase中的直接但有效的基于角色的访问控制机制。
寻找更多的supabase内容?加入我的Twitter,以获取最新更新,教程和见解!跟随以保持循环。