推荐开源项目:Supabase 多租户角色权限控制
项目地址:https://gitcode.com/gh_mirrors/su/supabase-tenant-rbac
项目介绍
Supabase Multi-Tenant Role-Based Access Control(RBAC)是一个基于PostgreSQL的扩展,为Supabase项目提供了一套用户组和角色系统。用户可以通过database.dev工具轻松将其添加到数据库中。该系统在社区定制权限工作的基础上进行了改进。
项目技术分析
这个扩展利用了PostgreSQL的表级别安全性(Table-Level Security,TLS),通过一个名为group_user
的表格管理用户与组的关系以及组内的角色分配。它还创建了一个名为user_role
的视图,方便查看并操作用户的角色。系统中的核心功能包括用户组创建、用户加入组、角色分配等,这些都可通过触发器自动更新存储在JWT和auth.users
表中的信息。
此外,提供了一些内置函数,如is_group_member
、has_group_role
、jwt_is_group_member
和jwt_has_group_role
,用于查询用户的权限状态,其中一些函数直接从JWT获取数据,以提高性能,而另一些则查询数据库以确保安全性。
项目及技术应用场景
Supabase RBAC非常适合需要精细权限控制的应用场景,例如:
- 多租户平台 - 允许不同租户之间的数据隔离,每个租户有自己的用户组和角色。
- 协作应用 - 用户可以被分配到特定团队或部门,并具有特定权限。
- 企业级软件 - 对于有复杂权限需求的企业内部系统,可以轻松管理多个角色和权限。
- 内容管理系统 - 可以根据角色限制用户对内容的访问和编辑权限。
项目特点
- 灵活性 - 支持用户在一组内拥有多个角色,灵活适应多种角色结构。
- 易于集成 - 基于Supabase,无缝集成现有的Supabase项目。
- 自定义权限策略 - 提供RLS(Row-Level Security)政策,可以根据用户组和角色创建自定义的安全规则。
- 实时更新 - 虽然存在JWT刷新问题,但可以通过实现实时订阅或附加触发器来部分解决。
免责声明
该项目由个人开发并用于个人用途,尚未进行独立安全审核,可能存在潜在的问题和风险。强烈建议用户在使用前自行评估其安全性和适用性。
如果你正在寻找一个强大的且易于管理的角色权限解决方案,Supabase Multi-Tenant RBAC无疑是一个值得尝试的选择。通过其简单易用的功能和PostgreSQL的强大支持,你可以构建出更加安全和高效的应用程序。现在就去database.dev安装体验吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考