SaaS用户管理系统模型设计
最近一直在研究关于SaaS化的用户管理系统,现将项目中的模型做一整理,先贴图:
图中黄色方框:租户/组织、部门、员工 完成的是对整个组织结构及结构中人员分布的管理;
图中绿色方框:系统用户(包括登陆账号)、权限包、角色、功能权限、功能、菜单分类、数据权限、数据权限操作 完成的是对 系统操作的管理;
其中有许多需要理解的地方:
1. 权限包和角色都是对功能权限和数据权限的打包,但一个是面向租户的,而一个是面向用户的;
2. 由于数据权限大多数人比较陌生,所以具体说明一下,数据权限 是可以把某一等级的某一分类的数据,共享给任一角色或权限包,如:我们可以把租户A中的部门C的员工信息 共享给租户B中的某个角色D,但角色D只能对这些数据进行查看,不能修改;
3. 员工和系统用户,又有本质的不同,员工,只是对组织内人员的管理,而系统用户是用来登陆管理系统的人员,员工可以是系统用户,也可以不是;系统用户可以来自员工,也可以来自其它渠道,如:合作伙伴之类;
4. 另外要说明的是,数据权限尽量少用;此处,我们可以将业务能控制了的数据权限,叫做 相对数据权限;不能用业务控制,必需要在实际业务中实现的权限叫做绝对数据权限;因为维护一套绝对数据权限是相当复杂的,所以请谨慎使用;
下面,给出比较完整的类图:
上图是比较完整的类图,但没必要一定全部实现,请大家按实际需求选用,比如一些传统的SaaS系统,不需要共享数据,则不需要实现数据权限部分,再如,不需要管理部门或员工信息,则这部分可以省略;