首页 > 代码库 > 权限浅析

权限浅析

  • 权限控制是企业开发中的最基本功能,权限控制子系统中包含如下几个部分?

 

  • 员工:
    • 员工描述的是企业中的员工新,也是登录时用户名和密码比对的最终数据源。

 

  • 角色
    • 角色描述的是员工在企业中所担当的角色,此处的角色一定要和职务区分开。职务通常是具体岗位的描述,例如经理、总监,而角色是一个抽象的概念,不对应任何具体的岗位。
    • 例如1:
      • 张三在公司的职位是CEO,但是张三可以拥有A,B,C,D四个角色,也就是说角色是抽象概念。在定义的时候,角色的名称不是核心因素,仅仅为了进行区分角色之间的不同,往往企业级应用中,喜欢使用职务名称作为角色名称,但是两者截然不同。
    • 例如2:
      • 李四新入职,被分配到库管中心。他所具有的角色是普通员工(A),仓库管理员(B)两个角色,三个月后,李四被调到销售部共偶作,那么他还具有普通员工(A)的角色,但是需要取消其仓库管理员(B)的角色,并为其添加销售人员(C)的角色,此时李四的角色由AB变为AC。角色实际上和职务没有任何关系。 

 

  • 资源
    • 资源是对应用系统中可操作的对象的抽象描述。
    • 应用系统中有大量需要控制的实体,例如界面上的某个按钮是否可以点击,某个链接是否可以访问,某列数据是否可以看到,再抽象一级,某个后台方法是否可以运行。此处描述的按钮、链接、数据、方法就是所谓的实体,但是还不能算资源。
    • 资源是和实体绑定的,但是资源还要有操作能力的绑定。例如按钮可以看到,但是不能点击,处于灰色状态;数据可以查看,但是不能修改。换句话说,实体对应有很多操作能力,而资源描述的是某个实体所具有的某种操作能力。
    • 例如:张三是普通员工,可以查看自己的工资数据,但是不能查看别人的工资数据,也不能修改别人的工资数据,那么对于工资数据来说,张三仅仅具有单一数据查看的能力;李四是财务人员,不仅可以查看自己的工资数据,还可以查看单位所有员工的工资数据,而且还可以对所有人的工资数据进行修改,李四具有对该数据的修改权。此处对工资数据的查看权,对工资数据的修改权都可以称为资源。
    • 例如:张三是销售部员工,可以申请报销,那么就可以执行报销申请对应的后台方法,而李四是销售部主管,可以审批张三提出的申请,那么就可以执行对应的审批报销申请的方法。但是该方法张三是不能执行的。此处对后台申请报销域审批报销的梳理是两个方法完成的。这两个方法的执行权也可以作为资源。
    • 我们可以想象一下,上面的例子中张三和李四都是员工,为什么张三具有申请权,而李四具有审批权?原因是两个人对应的角色不同,不同的角色具有不同的资源。因此在权限设计过程中,一个角色可以拥有多个资源,一个资源可以对应多个角色。

  

  • 综上所述
    • 一个部门有多个员工,而一个员工只能属于一个部门,部门和员工的关系是一对多。
    • 一个员工有多个角色,同理一个角色可以分配给不同的员工,所以员工和角色是多对多的关系。
    • 一个角色可以拥有多个资源,同理,一个资源可以对应多个角色,所以角色和资源之间也是多对多的关系。          

权限浅析