全网最全的权限系统设计方案,不接受反驳!(2)

简介: 全网最全的权限系统设计方案,不接受反驳!

2.4.3 职位

一个组织下面会有很多职位,比如财务管理会有财务总监、财务主管、会计、出纳员等职位,每个职位需要的权限是不一样的,可以像组织那样根据职位来分配不同的角色,由于一个人的职位是固定的,所以用户跟职位的对应关系时一对一的关系,职位跟角色的对应关系可以是多对多的关系。加入职位的RBAC模型如下所示:


image.png


2.5 理想的RBAC模型

RBAC模型根据不同业务场景的需要会有很多种演变,实际工作中业务是非常复杂的,权限分配也是非常复杂的,想要做出通用且高效的模型很困难。我们把RBAC模型的演变汇总起来会是一个支撑大数据量以及复杂业务的理想的模型。把RBAC、RBAC1、RBAC2、用户组、组织、职位汇总起来的模型如下所示:


image.png


按照这个模型基本上能够解决所有的权限问题,其中的对应关系可以根据实际的业务情况来确定,一般情况下,组织和职位是一对多的关系,特殊情况下可以有多对多的情况,需要根据实际情况来定。


理想的RBAC模型并不是说我们一开始建权限模型就可以这么做,而是数据体量、业务复杂度达到一定程度之后可以使用这个模型来解决权限的问题,如果数据量特别少,比如刚成立的公司只有十几个人,那完全可以用用户-权限模型,都没有必要使用RBAC模型。



3 权限系统表设计

3.1 标准RBAC模型表设计



标准RBAC模型的表是比较简单了,要表示用户-角色-权限三者之前的关系,首先要创建用户表、角色表、权限表,用户和角色是多对多的关系,角色和权限是多对多的关系,需要再创建两章关系表,分别是用户-角色关系表和角色-权限关系表。这六张表的ER图如下所示:


image.png


3.2 理想RBAC模型表设计

理想的RBAC模型是标准RBAC模型经过多次扩展得到的,表结构也会比较复杂,因为要维护很多关系,如下图所示是理想的RBAC模型的ER图:


image.png


这里面需要强调的是角色互斥表,互斥的关系可以放在角色上,也可以放在权限上,看实际工作的需求。


4 结语

本文从易到难非常详细的介绍了权限模型的设计,在工作中需要根据实际情况来定义模型,千人以内的公司使用RBAC模型是完全够用的,没有必要吧权限模型设计的过于复杂。模型的选择要根据具体情况,比如公司体量、业务类型、人员数量等。总之最适合自己公司的模型就是最好的模型,权限模式和设计模式是一样的,都是为了更好的解决问题,不要为了使用模型而使用模型。



相关文章
|
6月前
|
数据采集 存储 人工智能
RAG实战指南:如何让大模型“记得住、答得准、学得快”?
AI博主maoku详解RAG技术:为大模型配备“外接大脑”,解决知识滞后、幻觉编造、专业适配不足三大痛点。文章系统讲解RAG原理、三大开发模式选择、Embedding模型选型、完整实战代码及效果评估,助你快速构建靠谱、可溯源、实时更新的智能问答系统。
|
9月前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
1478 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
|
机器学习/深度学习 数据库 数据安全/隐私保护
RBAC模型介绍
RBAC模型是一种基于角色的访问控制机制,用于解决企业系统中不同用户对不同业务的权限管理问题。它将功能集合为角色,然后将角色分配给用户,简化了大量用户的权限分配过程,降低了操作错误和复杂性。通过角色,可以实现用户与功能的解耦,便于权限管理。在RBAC中,用户、角色和权限之间存在多对多的关系,通常涉及五张数据库表来维护这种关系。
1179 10
|
存储 NoSQL 数据库
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
架构学习——ER图
架构学习——ER图
713 0
|
SQL 存储
数据权限就该这么实现(实践篇),yyds!
数据权限就该这么实现(实践篇),yyds!
1519 0
|
缓存 Java easyexcel
如何高效的导出 百万级别的数据量 到 Excel?
如何高效的导出 百万级别的数据量 到 Excel?
892 0
|
存储 安全 数据安全/隐私保护
轻松解锁BitLocker:创建自动解密批处理脚本
本文介绍了如何在Windows 7中通过创建批处理脚本来简化BitLocker驱动器的解锁过程。利用`manage-bde`命令行工具,用户可以通过输入驱动器盘符和密码来解锁BitLocker保护的驱动器,同时强调了安全注意事项,建议避免在脚本中直接写入密码以防止安全隐患。
892 1
|
安全 Java API
技术笔记:SpringBoot集成Swagger3.0(详细)
技术笔记:SpringBoot集成Swagger3.0(详细)