Preface
之前的接触到的大部分系统都有权限设计,但每个系统的权限设计都不太一样,有的简单,有的复杂一点。基本设计都是根据各自的需要设计的,今天开始着手设计实现一个通用的权限模块,能快速的高效的集成到项目或产品中。
Requirements
- 首先,确定的权限需要管理哪些内容:
- 资源的权限,区分不同角色不同人员所拥有的访问权限
- 控制的权限,区分不同角色不同人员所拥有的控制操作权限
- 数据的权限,区分不同角色不同人员所拥有的数据访问权限
- 业务模块或者产品的权限,区分不同模块及产品之间的访问权限
- 用户的管理,模块中任何用户都不拥有直接创建和分配权限,所有的操作控制访问限制都有角色来决定。模块在初始化或接入后由系统分配一个超级管理用户,该用户具有最高级别的管理控制权限。模块中不存在特殊的角色和用户。
- 角色的管理,为了区分某些具有连续的或者类似的访问控制权限,设定了角色的概念。角色与用户是N:N的关系。即一个用户有多个角色(如某用户即是人事又兼任行政事务),一个角色对应多个权限资源。
- 组织机构与产品的管理,模块中与用户角色相对应的一条权限管理线,用来区分管理不同的产品与组织机构,模块可以实现多个组织机构与权限的分配控制管理。
Design
用户的用例图
Administrator用户由系统模块生成可以进行自身的登录验证授权,并且对用户、角色和资源有维护的权限。同时他具有普通用户的所有权限。