综述:对于一个大型的管理系统来说,用户一般都较大,根据用户身份,赋予其不同的权限十分重要,针对我司系统前后两种管理权限方案进行分析,加深理解,便于以后进行经验借鉴
1.老版本的权限管理实现思路
1.1实现思路分析
主要分为角色设置模块:先是创建各种角色,这些角色可以给分配每个页面的查看,导出,导入,新增,删除,修改,历史版本导出等其中的部分功能;也可以新增删除角色;
用户管理模块:用户管理则是新增一个用户账号,录入必要的姓名,电话等信息,然后赋予其相应的角色,这样该用户就拥有了该角色对应的权限了;
在一级,二级,页面名称,和页面按钮四级中,通过相应的编码来控制其的显示和隐藏;
1.2 这种系统存在的问题
一旦新增和一个角色,该角色还被赋予了某一个人,那就不能删除,也不能随便修改,因为你已修改,就修改了一批人的权限;
一旦一个人需要的权限和所有人不同,那就需要为其单独创建一个角色,这样最终需要维护的角色就非常多,非常冗余,最终就乱了,我们也会忘记到底哪个角色复合某一类人的权限需求;
2.新版权限管理系统实现思路
2.1实现思路
基于上述系统存在的问题,开发新的权限系统;
我们可以创建多个角色模板(不能随便改),每个角色之间权限存在一定的差异,我们可以给某一个人赋予多个角色,这些角色之间的权限可能是有重复的,我们使用去重之后的权限结果赋给一个用户,这样一个用户的权限就是多个角色排列组合之后的结果,如果一定要加一个权限,我们加一个角色模板;并将该角色模板权限添加给那个用户即可;
这里面包含了继承的思想;
后期对整个架构进行了降维处理,每个接口给分配一个pageCode和opCode,所有的请求接口都是通过同一个接口完成的,
后端根据连个code找到相对应的url接口地址,根据这个地址去执行相应的接口;并将数据返回。
这里为什么不每次去调用接口之前,根据cookie中携带的username去判断用户是否有当前的操作的权限呢?把民情管理系统的东西也纳入进来进行对比,思考一个后台管理系统到底应该怎样来设计权限管理系统才是最佳的?
后台是怎样根据权限去控制它的一级,二级,页面名称和页面上的按钮的显示和隐藏的呢(xc那边的实现思路)?
2.2 存在的问题
假设我现在新增了一个页面,需要给一个用户去加这个页面的权限,那么需要多次去查找到底是那个角色模板中有这个页面的权限,非常麻烦,所以我们加一个查询页面的入口,通过查询该页面对应的几个角色模板和相应的权限,我们就能知道我们应该勾选哪个角色模板了;
3.人人开源spring boot+Vue后台管理系统权限管理分析
3.1先是会创建页面的角色,给角色勾选页面的权限,及页面中的按钮的权限,后台将每个页面的权限路径存储下来,前端通过接口控制页面的显示与否,以及页面中的按钮的显示与否;