本着宁简勿烦的奥卡姆剃刀原则,对于以上复杂的权限管理需求,首先可以笼统出几个必要的概念。
A. 资源(Resource)
借鉴传统的LDAP产品,我们可以把每一个需要纳入管理的组织、人、财、物、数都看成是一种资源,当然每种资源的描绘内容是千差万别的。
B. 资源类型(ResourceType)
不同的资源类型对应不同的元数据,可以有不同数量和类型的字段对其停止描绘。不同资源类型之间互相可以有关联关系。
根据一般性的社会需要,可以大致分为:公司、部门、个人、设备(可以再细分)、地域(可以再细分)、小区等。原则上需要拥有单独的元数据描绘的资源都需要定义为一种资源类型。
C. 资源详情(ResourceProfile)
假设需要去查看资源的详细的情况,就需要根据“资源类型+资源元数据”翻开资源详情,在资源详情上面可以停止各种增删查改操作。
D. 资源目录(ResourceTree)
不同资源互相之间存在层级和依赖关系,并且每个资源只要唯一的父级资源,就构成了一颗自上而下的资源目录或者资源树。资源树是我们后期停止数据权限设置和控制的根底。
E. 权限(Privilidge)
权限比较简单,可以对应系统中某个菜单入口,或者某个操作按钮,或者某类资源的增删查改操作等。
F. 角色(Role)
角色跟RBAC一样,即是一组权限的组合。角色和角色之间可以形成层级关系。
一般而言,父级角色拥有比子级角色更大的权限,子级角色的权限则是父级角色权限的子集。
G. 岗位