supabase中基于简单的基于角色的访问控制
#网络开发人员 #database #supabase

我分享了这篇文章ð,它比我预期的更加关注(考虑到我的常规标准ð)。这是一切如何融合在一起的细分。

1.定义角色

对于更具人为友好的角色的方法,您可以创建自定义枚举类型:

CREATE TYPE user_role AS ENUM ('spots_moderator', 'admin');

2.设置user_roles表

user_roles表使我们能够将角色与用户联系起来。为确保用户_roles的安全性,启用行级安全性(RLS)并实施策略:

Image description

保护user_roles启用RLS(行级安全)并添加以下策略auth.uid() = user_id

Image description

此策略授予身份验证的用户访问他们所拥有的角色。

关键点:

  • 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)))

Image description

关键点:

  • user_roles具有RLS策略,允许身份验证的用户阅读其角色
  • 关于spot_proposals的RLS政策限制了对特定角色的访问,例如spots_moderator

此设置可确保Supabase中的直接但有效的基于角色的访问控制机制。

寻找更多的supabase内容?加入我的Twitter,以获取最新更新,教程和见解!跟随以保持循环。