前言
上篇文章组织结构与权限模型设计(一)和组织结构与权限模型设计(二)中,介绍了权限模型的两种实现方案。方案一将操作功能和数据范围在一个维度,用角色的权限描述,方案二将操作功能和数据范围分成两个维度,分别用角色的权限和职位描述。方案一的优点是,配置简单,用户在一个地方把权限配置好就行了;方案二的优点是,清晰易扩展(操作功能和数据范围分别扩展,不用做乘法)。
方案三
基于以上分析,方案三就是把前面两种方案结合了一下:权限依然是分为操作功能和数据范围两个维度,但是两个维度都在角色中定义。
还是以查看工作日志这个功能为例:
按方案三实现的话,系统中会有一个权限项,叫查看工作日志(操作功能),至于查看谁的工作日志(数据范围),我们还是用方案二中的power定义,它有两个选择:Manager或Member。将这个语义属性附加到角色上,标识为Manager的角色能查看整个部门的工作日志,标识为Member的角色只能查看自己的工作日志。将权限项和power属性赋给一个角色,再将这个角色赋给用户,用户就具备了相关的日志权限。
总结
方案三综合了前面两个方案的优点,既能让用户在一个面板中定义权限,又能从两个维度对权限进行描述。方案三是经过反复讨论,最终决定在我们产品中采用的权限模型,是否好用还需用户的验证。