权限控制功能设计

2018-10-31  本文已影响0人  bddbzz

我们搭建多用户多角色的业务系统,功能根据登录用户的权限来控制是少不了的。这里总结一下有关的设计。

首先,功能模块的划分,我们得整理一份映射表,存在数据库,配置文件,服务器内存皆可。最好统一存在服务端,这样前后端都有一个一致的mapping,变更的话也只用变更一个地方。

其次,登录授权的过程,前端登录成功获取当前用户的授权模块ID数组,这个数组存在全局变量,localstorage,sessionstorage皆可。前端还需要一个验证授权的公共方法提供给各个模块调用。

然后,登录成功我们一般进去一个管理首页,会加载功能菜单,可能有多级,这个时候要根据权限做一下过滤。SPA的web应用越来越多了,我们对路由的管理也更方便了,对后端的服务我们可以启用统一的拦截,比如401的时候提示没有权限,跳转登录或者前一个有效的路由。同时也要监听路由跳转,比如在angularjs的$stateChangeStart,如果是非法路由我们就阻止本次跳转。

如果我们的权限控制要求精确到模块的具体操作的话,那我们的UI得隐藏有关按钮,阻止有关方法的运行。在angularjs框架下,我们可以在权限按钮上加一个属性,比如fcode="01004",再写一个directive 解析这个fcode,判断无权限把元素直接移出文档。

最后,权限控制最关键还是后端服务得做好把控,前端只在UI和交互上做些合理的控制。另外对于权限互相依赖的情况,我们在权限设置界面可以做些关联判断,比如勾选编辑功能,查看功能也会默认勾选。如果不这样做的话,那么后端接口得做兼容,比如查看的方法,有编辑或者查看权限的用户都可以调用。

以上只是我个人的设计,可能太规矩了,欢迎各位指出漏洞或者提供新的思路。有关的源码放在我的github。

上一篇 下一篇

猜你喜欢

热点阅读