0.前提

:用户只有一个直属部门,但角色可以关联多个部门

有一种情况就不太适用:比如说地区经理是一个角色,张三是北京市地区经理,他在组织架构中的直属部门是华北大区,然后一个黑龙江的销售李四提一个折扣申请,按流程首先是地区经理来审批,但不能让张三审批,因为李四应该由黑龙江的地区经理来审批(角色再做一个细分?比如角色叫 北京市地区经理?或者地区和部门做切割?)

如果是一个用户可以选多个部门,那么在登录成功后需要选择以哪个部门成员来进入系统

1.若依设计

  • 权限

    • 菜单权限:与角色相关联,不同的角色展示不同的版块即页面
    • 功能权限:是否允许特定的角色执行 增/删/改/查/导入/导出/上传/下载 功能
  • 角色:一个用户可以有0-n个角色
    • 与菜单关联,级联(如果选择了一个版块,那么该版块下的子页面及功能权限都有了)
    • 数据权限
      • 看所有
      • 看自定义部门所有数据
      • 看本部门所有数据
      • 看本部门及子部门所有数据
      • 只能看自己创建的数据

1.1 看所有

1.2 看自定义部门所有数据

先假设一个学生管理系统,组织架构如下:



此时有一个教导处主人的角色,那么他就能看到教导处、高一、高二、高三部门的数据

1.3 看本部门所有数据

班主任能看到班上所有学生的信息

1.4 看本部门及子部门所有数据

班主任能看到班上所有学生的信息以及所有学科成绩的信息

2.扩展

  • 设置用户组属性,给一个用户组批量设置1-n个角色
  • 角色组
  • 角色和角色之间可能还有包含、互斥、交叉的关系
  • 角色和角色之间是否有等级的划分?(类似于地区有层级,国家 > 大区 > 省/自治区/直辖市/特别行政区 > 市/区 > 区/县/市 > 乡/镇/村 等)
  • 角色和数据表之间强关联,指定每个角色对一张表而言展示特定的列,比如说银行卡号、身份证号等涉及机密信息只允许特定的角色才能查看,如果是普通用户则不能查看或者进行数据脱敏(脱敏的话又涉及到以哪种规则来脱敏,比如说把卡号分为几部分,隐藏哪部分,用*或者中文乱码来代替等等)
  • 部门设置直属领导,副领导,便于审批时使用
  • 另外组织架构可能每个公司都不同,有些都是显示的是职能,比如销售部,财务部,行政部等,有些是人名+职能部门,人名一般在职能部门的上面,说明这些职能部门归该人统领,比如说高级副总裁张三(这是一个部门),下面有财务部,行政部等,那边张三手下的部门就需要像张三汇报
  • 在若依这边,岗位也只是一个字段,没有体现其他作用。

若依这块是在vue里面编写的,判断角色hasRole('xx,yy'); 不利于后期修改

RBAC学习(一)的更多相关文章

  1. Django-CRM项目学习(六)-rbac模块(权限组件)

    1.rbac权限组件 1.1 模板分析(五表结构) 1.2 模板构建 人物和角色进行多对多绑定,角色与权限进行多对多绑定.其中人物和角色的多对多绑定的操作可以避免相同的人物多重权限的操作. 1.3 数 ...

  2. kubernetes学习笔记之十:RBAC

    第一章.RBAC介绍 在Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow ...

  3. yii2 rbac权限管理学习笔记

    下面介绍一个 yii2 的 Rbac 权限管理设置,闲话少说,直接上代码, 1.首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main ...

  4. Kubernetes 学习16 RBAC

    一.概述 1.前面讲过,kubernetes的授权也是基于插件来实现而且用户访问时某一次操作经由某一授权插件检查能通过后就不再经由其它插件检查.然后由准入控制插件再做进一步后续的准入控制检查.那么在他 ...

  5. Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)

    RBAC 基于角色的访问控制 基于角色的访问控制用代码实现一下其实就是一个if的问题if(如果有角色1){ } 如果某个角色可以访问某个功能,当某一天其他的另一个角色也可以访问了,那么代码就需要变化, ...

  6. 学习RBAC 用户·角色·权限·表

  7. keystone命令与client接口学习

    keystone学习 ------------------ Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, ...

  8. 《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)

    学习地址为: http://www.yiibook.com/book/agile_web_application_development_with_yii1.1_and_php5   1.建立应用程序 ...

  9. 权限系统与RBAC模型概述

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3793894.html ...

  10. Oracle User Management FAQ翻译及学习笔记

    转载 最近了解到AME 的东西,很迫切,先转载一篇 [@more@] Oracle User Management FAQ翻译及学习笔记 写在前面 本文主要是翻译的英文版的Oracle User Ma ...

随机推荐

  1. Feign熔断

    在Feign中使用 @EnableFeignClients中已经默认打开了断路器功能,所以这里的启动类上不需要再加@EnableCircuitBreaker注解 只需要在@FeignClient中为f ...

  2. linux 系统⽇常管理--运维必备

    [监控系统的状态] 1. w 查看当前系统的负载 相信所有的linux管理员最常⽤的命令就是这个'w' 了,该命令显⽰的信息还是蛮丰富 的.第⼀⾏从左⾯开始显⽰的信息依次为:时间,系统运⾏时间,登录⽤ ...

  3. 第三课 Hello World显示

    HelloWorld 1.新建文件件 2.新建java文件 3.编写代码 public class Hello{ public static void main(String[] args){ Sys ...

  4. MeanShift 均值漂移算法

    MeanShift, 它常被用在图像识别中的目标跟踪,数据聚类.分类等场景

  5. PLC入门笔记6

    计数器指令及其应用 计数器指令介绍 很多场合需要进行计数操作.例如电机启动次数.生产线物料经过次数.位置传感器传送的脉冲次数等. 计数器分为普通和高速两种. 比PLC扫描频率远小于用普通,接近或大于用 ...

  6. React中的固定组件(随遇随记)

    <React.StrictMode></React.StrictMode>对组件中使用严格模式 <React.Fragment></React.Fragmen ...

  7. 虚拟机VMware15的CentOS7.3的docker下安装Oracle11g

    1.拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 2.安装容器:docker run -d --name o ...

  8. 12.1linux学习第十二 天

    8.2 Iptables 在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙.尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然 ...

  9. C#和C++差异化对比

    这里只记录和C++面向对象的区别,也并无比较成分,只做差异化学习使用. 1. 访问修饰符区别:多了一个Internal:成员仅能被同一个项目中的代码访问. 2. 字段的访问:增加了Get,Set访问器 ...

  10. drf视图类

    1 2个视图基类 # django 内置的View# drf 的APIView ,继承自View# GenericAPIView -两个重要的类属性:    queryset = Book.objec ...