VUE前端编程:浅谈基于角色的访问控制点(ACP)模型

目前应用中的模型一般基于角色(RBAC)设计,通过访问控制点(ACP)向ROLE的绑定以实现角色在应用中的交互要求。因此,结合系统的实际,这里初步提出一个基于角色的ACP访问模式,抛砖引玉,供大家参考。




实现原理

ACP的载体一般是按钮(Button)这样的交互控件,其安全要求是,该按钮仅允许特定的角色能访问到,要做到这点,必须要解决2个方面的问题:一是这个ACP授权给什么角色,二是当前的登录用户拥有什么角色。然后通过二者的匹配确定ACP载体的可见性(V-IF实现)


STEP1:封装角色适配机制的混入插件roleMatcher

如下图,我们可以用把登录信息如账户名称、角色信息等通过VUEX对象管理起来,然后roleMatcher做一下map,获得当前登录用户所拥有的权限。另建grantRoles,存放ACP授权的角色信息,默认最低权限如来宾账号。最后,封装一个hasRoles的判断逻辑,检查登录用户的角色是否能和授权角色匹配上。


使用roleMatcher混入插件的好处是可以通用性的为所有进行权限控制的ACP提供解决方法。



STEP2:ACP处理

在ACP中,我这里是一个按钮的例子,在ACP中,要引入roleMatcher,并允许通过ACP的value为roleMatcher传递grantRoles,也就是说,ACP可以自由配置授权访问ACP的角色。另外,roleMatcher中的hasRoles将在ACP中体现为不同的表现逻辑。



虽然逻辑很简单,但扩展开来考虑,可以从以下几个方向进行完善:

角色继承

很多角色是通过继承来实现的,如员工=>主管=>部门长=>条线长=>总经理,本质上,是从下到上的聚合树结构,如果扩展开来,可将角色数组变为数组对象,为角色字符串构建单独的对象,通过PATH队列管理继承关系,如此,可以支持到角色继承的实现。


PERMISSION

另外就是Permission机制的实现,这是ACP的本义,就是在需要控制的点上进行细化,如可见与否、部分可见、部分数据可见等,作为permission细化并暴露出来给角色,这样做虽然比较复杂,但通用性和灵活性更高。


希望对前端实现的朋友有所启发,欢迎大家就相关问题和我交流,也欢迎大家随时提出指正意见,一起进步。



#前端##编程##我上头条##生活日记#

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章