在实现过程中对可能存在的权限需求进行了分类,也希望提提意见。
一是系统权限,主要是对模块为单位的权限划分,具体就是用户对该模块可见不可见,能不能对该模块进行再授权的操作。表现在用户界面就是用户登录系统主页面后,可以看到的顶部菜单和左侧outlookbar菜单的内容控制。它是粒度最大的权限控制。
二是模块操作权限,在对整个模块的权限做出控制后,这里继续对模块的浏览、增加,修改,删除的操作权限做出控制,也可以理解为对象权限 。还是以车辆管理为例,不同的人员对这个模块的操作是不同的,有些用户可以新增,删除车辆;而有些用户则只是可以对车辆的情况查看不能修改。
三是数据范围权限,又可以叫做对象实例级权限。事实上不是每个用户都可以看到所有记录的。以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制。数据根据其类型,相应字段数值范围划分为不同的区域。不同的人拥有不同的区域查看权限。
四是单条数据ACL权限,具体说就是对每条数据都要实现权限控制,每条数据都有一到多条权限数据与其对应。以个人通讯录为例,每个用户都维护自己的一个通讯录,这些数据都只是对本人可见,其他人不可见。但用户可以对这些数据做出授权,将某条联系方式以授权的方式共享给其他人,并赋予不同的权限,包括拥有,修改,删除,浏览四种权限。
五是数据字段权限,这也是用户的最小粒度的权限控制。每条业务数据权限可以精确控制到每一个字段。包括单个字段的可否浏览以及可否修改。
六是数据范围操作权限,其实这个是可以和数据范围权限合为一个的。具体的区别在与对已经划分范围的数据再增加操作的权限控制。还是以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制,可以查看所有数据。但是请注意:他们只能对这些数据拥有查看的权限,不能修改或是删除,而财务则拥有修改的权限。在一些情况下可以用模块操作权限和数据范围权限的叠加来满足对该权限的需求,但是在权限复杂的情况下,这个权限独立出来是必须的。