在风口浪尖后,如何有效控制权限?

  随着IT技术的不断发展,业务场景不断复杂,用户在业务操作过程对操作权限的要求越来越高,从原来的粗粒度权限到现在的细粒度权限,追求卓越的用户体验,权限主要包含两个方面,一方面是功能权限,另一方面是数据权限,下面将进行简单介绍两种权限。

1.   权限体系简介

  功能权限是指某个系统角色,是否有权查看或操作某个菜单或按钮,该种权限的方案目前已经相对比较通用且成熟,例如:A角色只拥有监控模块功能,B角色拥有配置管理模块及监控模块功能。

  数据权限是指对于同一功能菜单下的查询记录,A用户进行可以对第一条和第三条记录进行维护,B用户进去只能对第二条记录数据进行维护,对于第一条和第三条只能进行查看,这一类权限的方案现在虽然已经有一些解决方案,但是没有通用性,只能私有化自己的业务模型(也就是更多的是以硬编码的方式进行控制)。

2.   权限体系分析

  对于功能权限,一般而言,每个系统都有一个系统管理模块,系统管理模块一般都会有用户、角色、菜单的功能,其中权限的控制一般也是用于与角色关联,角色与菜单进行管理,这种及时无业务操作数据,不同角色的人员登录上去能看到的菜单及页面,就是功能权限控制的范围。这类常见比较多,一般会以人员的级别或职位进行定义,例如:一般IT公司内部办公系统,会分普通员工角色、项目经理角色、项目总监角色等,对于一般员工只具有普通员工角色,而项目经理具有普通员工角色及项目经理角色,项目总监具有普通员工、项目经理及项目总监角色。而普通员工角色只能查看自己的相关数据,而项目经理可以查看自己及自己管辖范围的部分业务数据,项目总监类似。

  对于数据权限,一般是通过数据权限的规则,然后根据规则执行不同的权限控制体系,例如:某方案报告查询结果页面,具有报告名称、报告类型、报告上传人、报告归属部门、报告上传时间、报告状态等字段,如果需要做数据权限控制,则需要梳理出报告类型、报告上传人、归属人、状态等对数据权限是如何制约的,如:只有状态为未提交的且是本人上传的,才可以删除,再比如只有报告归属部门是本部门的才能够下载,这类数据权限的控制,相比功能权限复杂的多,实现难度也较大,且通用性较差。

3.   权限实现建议

  针对两种不同的权限控制,功能权限是基础权限,而数据权限是高级权限,由于功能权限目前已经有了通用的解决方案,本文不在进行阐述,首先我们大致了解一下数据权限的一些特征:

  • 数据权限一般是组合类型的细粒度业务需求;
  • 数据权限一般是某几个字段或临时角色相关;
  • 数据权限一般是权限体系完善的企业代名词;

针对数据权限的一些特征,如果需要建立体系化的数据权限,一般建议从以下几个方面考虑实现:

  • 规划建立统一的数据权限中心,并存储数据权限规则;
  • 前端应用的数据权限,由后端按照规则进行计算并反馈,前端只做结果的渲染;
  • 规则的定义,建议先进行抽象,然后进行实例化;
  • 规则的定义需单一,组合规则建立完善的规则引擎链;
  • 数据权限的数据,建议先标准化后台应用的元数据模型,禁止出现歧义或混乱的元数据定义;

 

你可能感兴趣的:(在风口浪尖后,如何有效控制权限?)