一、概要
权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,数据泄露等问题。
就目前来说最广泛的是一个账号对应多个角色,每个角色对应相应的权限集(RBAC模型)这种模型基本可以应对所有的问题,且通过角色可以实现灵活且多样的的权限操作需求。
权限管理中设计到三个重要的名词:账号、角色、权限。
账号:每个用户想要进入系统需要分配一个账号,而这个账号就是一把钥匙。我们通过控制账号所具备的权限,进而控制这个用户的授权范围。
角色:角色管理是确定角色具备哪些权限的一个过程,他是一个集合的概念,是众多最小权限颗粒的组成。我们通过把权限给这个角色,再把角色给账号,从而实现账号的权限,因此它承担了一个桥梁的作用。
权限:权限包括页面权限,操作权限,数据权限。页面权限控制你可以看到哪个页面,看不到哪个页面;操作权限则控制你可以在页面上操作哪些按钮;数据权限则是控制你可以看到哪些数据。
页面权限控制:页面权限主要通过菜单配置和页面跳转操作来控制。一般进入后台管理系统会呈现出主菜单,我们可以在角色管理中为每一个角色配置不同的菜单。用户使用账号登录时,后台通过判断该账号的角色,返回对应的菜单,这样就可以控制用户的一级页面的权限。对于二级页面及其他页面可以通过控制用户操作权限来限制用户访问。
操作权限控制:操作权限主要控制用户哪些按钮可以点击,哪些按钮不可以点击。我们可以事先为页面中要控制的按钮定义一个标识,在获取用户菜单时一并返回,通过检查当前用户是有有这个标识来判断是否有相应的操作权限。
数据权限控制:我理解的数据权限控制是角色有哪些接口调用的权限,防止用户跨域或者跨权限调用接口,我们需要把接口和角色菜单关联起来,调用接口时后台检测当前用户的角色是否有调用该接口的权限,如果没有权限则调用失败。整个权限管理中我觉得这一块是最复杂的,需要配置所有使用到的接口,还需要对每次接口调用进行检测,虽然可以通过正则表达式去匹配,但是还是有一定的局限性。另外对于非常大的系统,这个工作量是非常大的,所以这套权限控制方案不一定适用非常复杂的系统。
此片文章转载于:http://www.luoxudong.com/?p=442