授权基本逻辑

  1. 目前只提供两类对象的授权:原子资源,完全可以满足实际业务开发的需求
  2. 只有叶角色可以添加用户,用户自然拥有所属角色的全部授权
  3. 叶角色用户是多对多的关系
  4. 采用白名单策略,所有角色的授权都必须显式设置(superuser也不例外)

授权传递机制

CabloyJS中的角色授权有两种传递机制:

1. 继承传递(纵向)

子角色自动继承所有父角色的授权。比如,角色organization自动拥有角色authenticatedroot的授权

2. 聚合传递(横向)

角色可以聚合另一个角色从而拥有该角色的授权。比如,角色superuser聚合了角色system,那么角色superuser会自动拥有角色system的授权

角色模版:通过聚合传递机制可以实现角色模版的功能,也就是预定义角色,并为角色分配一组权限,从而便于在实际使用中快速给其他角色授权

授权途径

原子资源授权有三种途径:

1. 人工授权

如果某些权限只有在实际部署或运行时才能决定,可通过管理界面进行授权操作

2. 初始授权

如果需要在系统运行时,预先初始化权限,可以在后端API路由version/init中通过代码分配权限。比如,给模版角色system分配权限

初始授权测试环境开发环境生产环境均有效

3. 测试授权

为了测试与开发的便利,还可以在开发阶段预先初始化权限,可以在后端API路由version/test中通过代码分配权限。比如,给某些测试角色分配权限

测试授权仅在测试环境开发环境有效

分级授权

CabloyJS内置对分级授权的支持。在一个多级组织中,比如集团公司或者总部与分部组织中,一级管理员可以把授权分配给二级管理员二级管理员在指定的授权范围内再对所属组织的下级角色进行授权

分级授权是系统内置功能,不需要额外的编码开发,参见免费视频:CabloyJS全栈框架:从入门到精通:025 分级授权