角色基本概念

2018-11-29 07:00:10

角色模型

Cabloy的角色体系不同于网上流行的RBAC模型

RBAC模型没有解决业务开发中资源范围授权的问题。比如,Mike是软件部的员工,只能查看自己的日志;Jone是软件部经理,可以查看本部门的日志;Jimmy是企业负责人,可以查看整个企业的日志

RBAC模型概念复杂,在实际应用中,又往往引入新的概念(用户组、部门、岗位等),使得角色体系叠床架屋,理解困难,维护繁琐

概念辨析

涉及到角色体系,往往会有这些概念:用户用户组角色部门岗位授权对象等等

而Cabloy设计的角色体系只有用户角色授权对象等概念,概念精简,层次清晰,灵活高效,既便于理解,又便于维护

部门即角色

部门从本质上来说,其实就是角色,如:软件部财务部等等

岗位即角色

岗位从本质上来说,其实也就是角色,如:软件部经理软件部设计岗软件部开发岗等等

资源范围即角色

资源范围也是角色。如:Jone是软件部经理,可以查看软件部的日志。其中,软件部就是资源范围

角色树

Cabloy针对各类业务开发的需求,提炼了一套内置角色,并形成一个规范的角色树。实际开发中,可通过对角色树的扩充和调整,现实各类角色相关的需求

  • root
    • anonymous
    • authenticated
      • registered
      • activated
      • superuser
      • organization
        • internal
        • external
名称 说明
root 角色根节点,包含所有角色
anonymous 匿名角色,凡是没有登录的用户自动归入匿名角色
authenticated 认证角色
registered 已注册角色
activated 已激活角色
superuser 超级用户角色,如用户root属于超级用户角色
organization 组织角色
internal 内部组织角色,如可添加软件部财务部等子角色
external 外部组织角色,可为合作伙伴提供角色资源

术语规范

角色是面向业务系统开发最核心的功能之一,Cabloy提供了既简洁又灵活的角色体系,为便于交流与开发,Cabloy对其中用到的术语规范如下:

目录角色

目录角色:凡是可以包含子角色的角色,如组织角色、软件部

目录角色不允许添加用户

叶角色

叶角色:角色树的最末端,如超级用户角色、软件部设计岗

只有叶角色才允许添加用户

子角色

子角色:既可以是目录角色,也可以是叶角色

聚合角色

聚合角色不是一种角色名称,而是体现了角色之间的一种关系。一般情况下,角色树体现的是纵向的从上至下的继承关系,还可以让一种角色横向的聚合另一种角色

通过聚合角色机制,很容易实现类似角色模版的功能

资源范围

特指在进行角色授权时,权限所限定的角色范围

角色结构重建

为了提升运行性能,Cabloy对角色树进行了优化处理。所以,如果角色树结构发生了变动,就需要执行角色结构重建,以便对角色树重新优化

查询角色树状态

const dirty=await this.ctx.meta.role.getDirty();

使用代码重建

await this.ctx.meta.role.build();

使用管理界面重建

进入角色管理页面,当角色结构发生变动时,页面右下角会自动出现按钮+,点击此按钮即可完成重建工作

roledirty



评论: