权限设计的总结

2024-05-18 15:31

1. 权限设计的总结

用户:参与系统活动的主体,如人。 
  
 角色:特定权限的集合; 
  
 权限:角色可使用的功能,分角色的功能权限和角色的数据权限;
  
 RBAC设计方案:基于角色的权限设计方案,更好的管理用户;
  
 
  
                                          
 操作类型:对资源可能的访问方法,如增加、删除、修改等; 
  
  功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等;
  
  资源:系统中的资源,主要是各种业务对象,如销售单、付款单等; 数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等;
  
  数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的对象值;权限设计原则:第一:权限的粒度要做到最小,保证在权限分配时,只赋予用户足够完成其工作的权限;第二:避免出现权限互斥的情况
  
 权限设计原则:第一:权限的粒度要做到最小,保证在权限分配时,只赋予用户足够完成其工作的权限;第二:避免出现权限互斥的情况;
  
 所以基于数据的权限设计(数据权限则是控制你可以看到哪些数据,比如市场A部的人只能看到或者修改A部创建的数据,他看不到或者不能修改B部的数据。)
  
 
  
                                          
 第一步梳理:梳理层级关系(我们可以找出每一个层级的BOSS)
  
 超级管理员:
  
 集团管理员
  
 城市管理员(我们也可对这个城市组织节点授权)
  
 学校管理员(我们也可对学校组织节点授权)
  
 部门管理员(我们也对对这个部门组织节点授权)
  
 
  
                                          
  第二步:每一层建立角色
  
 每个后台用户可以自定义角色,给相应的用户授权,每个后台用户的权限是上一个后台用户权限的子集,后台用户创立角色的权限是子集的权限子集;这里也可以首先给城市,学校,部门这个组织节点分配权限,当每一层的管理员建立角色分配权限时只能是这个城市权限的子集;
  
 
  
                                          
 第三步:给角色授权
  
      这里我要将所有的权限进行打散:系统功能的筛选无非是从:系统名称-模块名称-功能项(这里的功能项已经拆解到按钮级别了)
  
 
  
                                          
 第四步:给用户授权
  
  角色创立了,我们就可以对用户进行授权,角色和用户的关系可以是一对一,也可以是一对多的关系;
  
 
  
  
 总结:
  
      以上就是本人对如何做权限设计的总结分析,仅供大家参考,希望在工作中能够帮助到大家,也希望大家一起多提意见,指出不足,感谢阅读!

权限设计的总结

2. 权限系统设计

 我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“ 用户-角色-权限 ”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图:
                                           基于这个,得先了解角色到底是什么?我们可以理解它为一定数量的权限的集合,是一个权限的载体。
   例如:一个论坛的“管理员”、“版主”,它们都是角色。但是所能做的事情是不完全一样的,版主只能管理版内的贴子,用户等,而这些都是属于权限,如果想要给某个用户授予这些权限,不用直接将权限授予用户,只需将“版主”这个角色赋予该用户即可。
   但是通过上面我们也发现问题了, 如果用户的数量非常大的时候,就需要给系统的每一个用户逐一授权 (分配角色),这是件非常繁琐的事情,这时就可以增加一个用户组,每个用户组内有多个用户,除了给单个用户授权外,还可以给用户组授权,这样一来,通过一次授权,就可以同时给多个用户授予相同的权限,而这时用户的所有权限就是用户个人拥有的权限与该用户所在组所拥有的权限之和。用户组、用户与角色三者的关联关系如下图:
                                           通常在应用系统里面的权限我们把它表现为菜单的访问(页面级)、功能模块的操作(功能级)、文件上传的删改,甚至页面上某个按钮、图片是否可见等等都属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而 在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。 如下图:
                                            这样设计的好处有两个: 
   一、 不需要区分哪些是权限操作,哪些是资源 ,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?);
   二、 方便扩展 ,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串即可。
   需要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。
   这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。最后扩展出来的模型完整设计如下图:
                                           随着系统的日益庞大,为了方便管理,如果有需要可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。
   例如:当遇到有多个子公司,每个子公司下有多个部门,这是我们就可以把部门理解为角色,子公司理解为角色组,角色组不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。
    1.用户表: 
                                            2.角色表: 
                                            3.用户与角色关联表 
                                            4.用户组表 
                                            5.用户组与用户信息关联表 
                                            6.用户组与角色关联表 
                                            7.菜单表 
                                            8.页面元素表 
                                            9.文件表 
                                            10.权限表 
                                            11.权限与菜单关联表 
                                            12.权限与页面元素关联表 
                                            13.权限与文件关联表 
                                            14.功能操作表 
                                            15.权限与功能操作关联表 
                                            16.角色与权限关联表 
                                            17.操作日志表 

3. 系统权限功能的设计

    几乎所有的管理后台都会涉及到权限的设计,权限控制是管理后台的重要功能,可以有效的提高系统的安全性,减少误操作、数据泄漏等风险的发生。但是,很多产品经理会对权限功能有一点害怕的心理,一方面是由于能参考的实例较少,权限管理算是一个“系统级”的基础功能,一般系统中只有管理员可以操作,不像其他功能可以通过去其他系统中试用体验,另一方面,对于权限功能普通用户无法操作使用,所以存在感较低,做好了也不会出彩,可没做好就会导致整个流程不通、产品崩溃。
  
  一   RBAC  模型 
  
      目前,接受度较高的功能权限模型是RBAC(Role-Based Access Control)模型。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。
  
  1.角色的作用 
  
 如果没有角色的概念,直接用户对应权限,虽然会更加灵活,但是后台的数据表设计会变得复杂,操作成本也会很高,同时容错能力也会变得很差。
  
 
  
                                          
 而引入“角色”概念后,用户与角色可为多对一或多对多的关系,当一个用户的角色为多对多时,当前用户的权限是多个角色的并集。此时只需要为角色赋予权限,能够大大减轻管理负担,同时将用户与权限解耦,提供更大的灵活性,同时整个设计的容错能力也提高了很多。
  
 
  
                                          
  2.引入用户组 
  
    一些大型的平台上,如果用户数量较大,新增角色时,需要为大量用户分配新的角色,工作量巨大,此时可以引入用户组的概念,将这些用户拉到同一个用户组中,然后对整个用户组进行角色的指定,这就大大减少了角色分配的工作量。
  
  同理如果权限较多时也会存在一样的问题,对角色进行权限设置时也需要大量的操作,此时可以考虑引入权限组的概念,将关联性较强的权限大包成组赋予角色,从而减少赋值时的工作量,现实中权限组的使用相对较少,因为系统中的权限一般来讲是有限的。需要注意的是即使有用户组或权限组的存在,也可以允许用户或权限与角色直接关联,这个可以视具体业务情况而定。
                                          
 下图所示为mac系统中运行添加用户组,并以用户组为单位配置权限。
                                          
 3. 角色继承的RBAC模型
  
 在一个业务场景中,如果角色需区分:设计主管、设计组长、设计成员,并且管理方式为向下兼容时,则需使用角色继承的RBAC模型。上层角色继承下层角色的全部权限,且可额外赋予权限。
                                          
 此时除了对角色进行定义,还需要管理角色间的关系,通过关系来体现角色的层级关系,从而达到继承权限的效果。角色的继承关系主要有两种:树形图和有向无环图。
                                          
 继承关系常常来源于公司团队的组织结构,此时常将角色与组织结构进行关联达到继承角色模型的效果。如下图所示的赵同学,其角色是“三级团队负责人”,与其并列的小组中有多个“三级团队负责人”的角色,但依附于左侧的组织结构树,各级负责人仅有查看和操作自己下属子节点的权限。
                                          
 4. 限制的RBAC模型
  
 在一个产品或系统中,部分角色可能是需要隔离的、不允许被同时赋予一个人的。跟大家熟知的“不能既是‘运动员’又是‘裁判员’ ”一个道理。
  
 因此,对于众多角色中的一组,只能是单选的关系,但多组角色之间可以共同存在。如下图中,一个用户可以既为设计师又为管理员,但在设计师角色组中仅能被赋予一个角色,在管理员角色组中也仅能被赋予一个角色。
                                          
 此外,限制还有可能是数量上的,比如一个产品组中必须有且只有一个管理员,不允许删除或再分配管理员角色,仅允许将负责人角色变更。
                                          
 限制的模型不仅仅对分配过程产生影响,有时即使拥有了多种角色,因为不同的角色对同一个功能的使用方式或数据会产生冲突,所以使用时也需要进行限制。如下图所示为同一时间仅允许以一个身份登录。
                                          
 根据不同的业务需求,限制的形式很多。需要注意的是不能仅依赖后端限制,而是要在前端展示清晰的规则和恰当的限制,避免用户出错和沮丧。
  
 三、权限的拆分与设计
  
 通过RBAC模型已经能够很好的搭建起用户、角色与权限之间的关系了。但具体是什么样的关系,以及“权限”这个抽象的概念具体如何规划?
  
 这些都需要分析清楚才能进一步设计出完善的权限系统。
  
 首先需要知道,一般产品的权限由页面、操作和数据构成。页面与操作相互关联,必须拥有页面权限,才能分配该页面下对应的操作权限。数据可被增删改查。
  
 整体关系如下图所示:
                                          
 因此,在设计之初我们就需要考虑到未来可能区分角色的地方,尽量解耦、模块化。对于技术来说,每一个页面模块、每一个操作都最好使用独立的接口。对于设计来说,需要保障所有角色因为权限而屏蔽掉部分操作和数据后,页面和流程仍能体验流畅。
  
 保证初期设计支持后,配置权限时,还需要注意以下几点:
  
  (1)确定是否支持前端配置 
  
 如果角色和权限相对固定,则一般将角色与权限的关系可以写在后台,改动时需要后端变更且重新上线。这种情况适用于公司内部系统等只有一个使用主体的系统。
  
 如果需要自定义角色或者每个角色在不同使用者的场景下有不同的权限,则需要将角色的定义、角色与权限之间的配置体现在“前端用户配置页面”。这种情况适用于有频繁变动的自定义角色权限,和有租户体系的系统。
  
  (2)以基本单元拆分,以业务逻辑配置 
  
 一般可将每个对象的“增、删、改、查”各自作为一个基本的权限单元。打个比方,在“人员管理”中,查看人员列表、添加人员、删除人员、编辑人员信息最好拆分为4个权限单元。在技术和设计上,我们希望能尽量做到解耦和模块化。
  
 但是在业务层面有些操作却是一体的。这些不能拆开的权限在“前端用户配置页面”中建议打包成一个整体提供配置。例如:如果我们确定在系统的现有和未来业务中,仅分为普通成员有“人员管理”的查看权限,管理员有操作权限,则可将“增、删、改”三个基本权限单位合并为“操作”权限进行配置。
  
  (3)页面权限优先于操作和数据权限 
  
 必须配置了页面模块权限后,才能配置当前页面模块下具体的操作权限,以及页面模块的数据展示权限。
  
  (4)查看权限优先于增删改权限 
  
 正常情况下,一定要先能查看某个模块或操作,其它的增删改操作才有意义。因此在设计时,应在获取查看权限前限制其它权限的配置,或者配置其它权限时默认赋予查看权限。
  
  (5)角色与权限的多种关系 
  
 角色与权限的关系不仅是单纯“是/否关系”,还包括以某种限制进行操作,和以某种程度访问数据。
  
 例如在“人员管理”中:
  
 数据范围:用户拥有查看人员列表的权限,但仅能查看自己所在的团队;数据边界限制(上限等):添加人员时不能超过20个等。数据字段:HR能查看人员列表中包括职级、薪资等字段,其它角色仅能查看姓名邮箱等字段;
  
 (6)角色与权限的设计表达
  
 在传达一个系统的权限设计规则时,设计师常常习惯用主观最直接的方式表达想法,如用“当……时,就……”的句式来表达。但一个平台中涉及的权限规则是非常多的,当通篇以这样的形式描述时,表达对象将很难理解。
  
 正确的描述方式:更清晰的是基于开发的语言,和技术模型的结果进行表达。将各角色与权限单元绘制成网格,每个交叉点网格中描述该角色与权限的数据关系和限制。
  
 如下图所示:
                                          
 四、需要注意的Tips
  
  1. 隐形的admin 
  
 在可自定义角色和权限的系统中,一般需要预留一个admin角色来进行系统的初始配置,用于添加首批的业务人员和配置基本的角色。
  
 有的系统中允许存在上帝视角的admin角色,则其可以作为“超级管理员”显示在角色配置的列表中。有的系统中不允许这种角色存在,则可将这种角色设置为隐形的状态,仅赋予维护系统的工作人员。
  
  2. 初始权限的赋予 
  
 对于允许用户自行加入的系统,需要设定一至多个默认的角色,有时可以是仅有最基础权限的“游客”角色。
  
 初始权限还可以与用户既有的某些数据字段进行关联,如添加用户时获取到用户的岗位为“设计师”,则直接赋予“设计师”角色的权限。
  
  3. 人员管理中对自己的处理 
  
 在人员管理中,管理员角色处理自己时需要额外注意。因为如果修改或删除了自己角色后,可能导致系统没有管理角色,从而无法添加其他成员和正常运行。设计时可添加判断,当自己为唯一管理角色时,禁止编辑和删除。
  
  4. 无页面权限的提示 
  
 虽然可以通过页面权限限制直接隐藏当前用户没有权限的页面,但不能排除用户获取到权限外的url地址。当用户意外访问到没有权限的页面时务必提供“无权限”的提示,避免用户认为系统bug。
  
 最后
  
 总结一下,整个权限系统设计就是定义各个节点和节点间关系的过程。
  
  节点包括: 
  
 用户;用户组;角色;角色组;权限(页面、操作、数据);权限组(页面、操作、数据);
  
  关系包括: 
  
 是/否关系;继承关系;限制关系(互斥、范围限制、边界限制、字段限制……)

系统权限功能的设计

4. 超全面的权限系统设计方案!

 地址:cnblogs.com/iceblow/p/11121362.html
   权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。 目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端
   迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)
   
   
                                           这是权限最基础也是最核心的模型,它包括用户/角色/权限,其中用户和角色是多对多的关系,角色和权限也是多对多的关系。
    用户 是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户,可以是OA系统的内部员工,也可以是面向C端的用户,比如阿里云的用户。
    角色 起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
   有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如20个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。
   但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给100人甚至更多授权,工作量巨大。
   这就引入了"角色(Role)"概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。
    权限 是用户可以访问的资源,包括页面权限,操作权限,数据权限:
                                           以上是RBAC的核心设计及模型分析,此模型也叫做RBAC0,而基于核心概念之上,RBAC还提供了扩展模式。包括RBAC1,RBAC2,RBAC3模型。下面介绍这三种类型
                                           此模型引入了角色继承(Hierarchical Role)概念,即角色具有上下级的关系,角色间的继承关系可分为一般继承关系和受限继承关系。
   一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。
   而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。
   基于核心模型的基础上,进行了角色的约束控制,RBAC2模型中添加了责任分离关系。
   其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。
   责任分离包括静态责任分离和动态责任分离。主要包括以下约束:
   即最全面的权限管理,它是基于RBAC0,将RBAC1和RBAC2进行了整合。
   当平台用户基数增大,角色类型增多时,而且有一部分人具有相同的属性,比如财务部的所有员工,如果直接给用户分配角色,管理员的工作量就会很大。
   如果把相同属性的用户归类到某用户组,那么管理员直接给用户组分配角色,用户组里的每个用户即可拥有该角色,以后其他用户加入用户组后,即可自动获取用户组的所有角色,退出用户组,同时也撤销了用户组下的角色,无须管理员手动管理角色。
   根据用户组是否有上下级关系,可以分为有上下级的用户组和普通用户组:
   每个公司都会涉及到到组织和职位,下面就重点介绍这两个。
   常见的组织架构如下图:
                                           我们可以把组织与角色进行关联,用户加入组织后,就会自动获得该组织的全部角色,无须管理员手动授予,大大减少工作量,同时用户在调岗时,只需调整组织,角色即可批量调整。
   组织的另外一个作用是控制数据权限,把角色关联到组织,那么该角色只能看到该组织下的数据权限。
   假设财务部的职位如下图:
                                           每个组织部门下都会有多个职位,比如财务部有总监,会计,出纳等职位,虽然都在同一部门,但是每个职位的权限是不同的,职位高的拥有更多的权限。
   总监拥有所有权限,会计和出纳拥有部分权限。特殊情况下,一个人可能身兼多职。
   根据以上场景,新的权限模型就可以设计出来了,如下图:
                                           根据系统的复杂度不同,其中的多对多关系和一对一关系可能会有变化
   授权即给用户授予角色,按流程可分为手动授权和审批授权。权限中心可同时配置这两种,可提高授权的灵活性。
   有了上述的权限模型,设计表结构就不难了,下面是多系统下的表结构,简单设计下,主要提供思路:
                                           在项目中可以采用其中一种框架,它们的优缺点以及如何使用会在后面的文章中详细介绍。
   权限系统可以说是整个系统中最基础,同时也可以很复杂的,在实际项目中,会遇到多个系统,多个用户类型,多个使用场景,这就需要具体问题具体分析,但最核心的RBAC模型是不变的,我们可以在其基础上进行扩展来满足需求。

5. 手把手教你做系统权限设计,看完不要说还不会

 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。
   迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)
                                           RBAC-0模型是权限最基础也是最核心的模型,它包括用户/角色/权限,其中用户和角色是多对多的关系,角色和权限也是多对多的关系。
    用户  是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户,可以是OA系统的内部员工,也可以是面向C端的用户,比如阿里云的用户。
    角色  起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
   有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如20个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。
   但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给100人甚至更多授权,工作量巨大。
   这就引入了  "角色(Role)"  概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。
    权限  是用户可以访问的资源,包括页面权限,操作权限,数据权限:
                                           以上是RBAC的核心设计及模型分析,此模型也叫做RBAC-0,而基于核心概念之上,RBAC还提供了扩展模式。包括RBAC-1,RBAC-2,RBAC-3模型。下面介绍这三种类型
                                           此模型引入了角色继承(Hierarchical Role)概念,即角色具有上下级的关系,角色间的继承关系可分为一般继承关系和受限继承关系。
   一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。
   而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。
   基于核心模型的基础上,进行了角色的约束控制,RBAC2模型中添加了责任分离关系。
   其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。
   责任分离包括静态责任分离和动态责任分离。主要包括以下约束:
   即最全面的权限管理,它是基于RBAC-0,将RBAC-1和RBAC-2进行了整合。
   当平台用户基数增大,角色类型增多时,而且有一部分人具有相同的属性,比如财务部的所有员工,如果直接给用户分配角色,管理员的工作量就会很大。
   如果把相同属性的用户归类到某用户组,那么管理员直接给用户组分配角色,用户组里的每个用户即可拥有该角色,以后其他用户加入用户组后,即可自动获取用户组的所有角色,退出用户组,同时也撤销了用户组下的角色,无须管理员手动管理角色。
   根据用户组是否有上下级关系,可以分为有上下级的用户组和普通用户组:
   每个公司都会涉及到到组织和职位,下面就重点介绍这两个。
                                           我们可以把组织与角色进行关联,用户加入组织后,就会自动获得该组织的全部角色,无须管理员手动授予,大大减少工作量,同时用户在调岗时,只需调整组织,角色即可批量调整。
   组织的另外一个作用是控制数据权限,把角色关联到组织,那么该角色只能看到该组织下的数据权限。
                                           每个组织部门下都会有多个职位,比如财务部有总监,会计,出纳等职位,虽然都在同一部门,但是每个职位的权限是不同的,职位高的拥有更多的权限。
   总监拥有所有权限,会计和出纳拥有部分权限。特殊情况下,一个人可能身兼多职。
   根据以上场景,新的权限模型就可以设计出来了,如下图:
                                           根据系统的复杂度不同,其中的多对多关系和一对一关系可能会有变化
   授权即给用户授予角色,按流程可分为手动授权和审批授权。权限中心可同时配置这两种,可提高授权的灵活性。
   有了上述的权限模型,设计表结构就不难了,下面是多系统下的表结构,简单设计下,主要提供思路:
                                           在项目中可以采用其中一种框架,它们的优缺点以及如何使用会在后面的文章中详细介绍。
   权限系统可以说是整个系统中最基础,同时也可以很复杂的,在实际项目中,会遇到多个系统,多个用户类型,多个使用场景,这就需要具体问题具体分析,但最核心的RBAC模型是不变的,我们可以在其基础上进行扩展来满足需求。

手把手教你做系统权限设计,看完不要说还不会

6. 系统分析中大家是怎样设计系统的多级权限控制的

  对数据进行控制最好通过弹性的方式,在一个系统里面或者功能模块里面对用户角色或者岗位进行设置,一般权限控制默认在一个权限管理系统模块进行设定,数据权限也应该如此。

  权限系统除了可以对用户能操作那些功能进行限定,也还可以对其访问那些组织机构的数据进行限定,我们通过权限系统,把这些权限控制的数据进行保存,在应用系统模块里面进行整合即可,根据角色拥有的数据权限,授予用户对其他部门或者机构的数据进行访问。如下面是我权限系统模块里面对角色权限的设置操作。

  1)对角色功能权限进行设置

  2)对角色数据权限进行控制

  当对角色的数据权限进行保存后,我们就可以把这个角色能够访问的组织机构(公司、部门、工作组等等)进行记录起来了。

  2)应用系统的集成,实现数据权限的控制

  如我的一个病人资料应用系统,客户要求就是基于互联网的应用系统,因此使用WCF数据通讯模式实现数据的集中管理,而且他们要基于医院单位的数据管理模式,也就是每个单位管理各自的数据,我们可以把不同的医院单位作为不同的公司性质来区分,这样在权限模块中进行设置即可。

  1)在应用程序中,通过在程序头部,让可以管理多个医院机构的用户选择管理的数据访问,即可实现不同的数据区分管理。

  2)当用户在上面切换不同的机构,所有存在的界面数据全部实现刷新,如打开了很多界面,那么这些界面的数据也随之更新为对应新的机构下的数据。