一、权限的解释
一般来说,在后台管理系统里肯定会使用到权限,权限一般分为功能级权限和数据级权限
1、功能级权限
1)、页面级权限(菜单):
不同的用户(角色)登录到管理系统后,看到的功能(页面)不一样。
思路:
1.1)、添加操作人员时:
超级管理,在添加操作人员时,需要给该人员分配权限(当然,后期也可以修改权限)。这个权限会发给后端。由后端保存。
1.2)、登录时:
前端进入登录页面,------》前端发送请求给后端------》后端验证用户名和密码是否正确----》如果验证通过,需要根据用户所属的角色查询查他对应功能----》响应给前端----》前端接收到后端响应的权限----》把权限循环显示在菜单区域(同时还需要处理路由配置)。
1)、显示对应的菜单
2)、做对应的路由配置
2)、数据操作级的权限:
不同的用户进入同一个页面,对数据的操作权限不一样,即:有的用户进去后,只能查询数据,有的用户可以对数据进行添加,修改,删除。
如:个人(员工)信息页面,员工进去只能做修改,不能做删除添加的功能。
不同的用户进入到同样的功能,看到的数据不一样。数据级权限一般都是跟前端没有关系,是由后端处理。
2、数据查看权限:(这个是后端处理,前端啥也不做)
不同的用户进入同一个页面,看到数据不同。如:人事管理系统的考勤。人事小姐姐能够看到所有人的考勤信息,而其它员工只能看到自己的信息。
补充:
纠正大家的误区:
1、(超级)管理员具有项目功能的所有权限? 答:不对。
管理员不做业务,所以,没有业务权限。
一般来说,管理员做的事情:操作员(员工)信息的维护(开账号),权限,角色,部门的分配。
2、 领导具有项目功能的所有权限?答:不会的。
一般来说,领导具有查询,统计的功能。
3、不要认为,一个后台管理系统只有管理员和超级管理员。
4、补充:
不同的系统,有不同的角色(其实就是甲方公司的职位),如:HIS(医院信息管理系统)的角色有:院长,主任,医生,护士,药剂师等等,这些人属于不同的岗位,那么,也就具备不同的功能。
二、react实现权限的思路和代码:
1、添加操作人员的界面_同时设置权限
1)、界面
2)、添加时,给后端保存的数据(这个数据格式,每个项目可以按照实际情况进行定义)
2、登录
登录成功时,可以把后端发回来的权限数据保存到sessionStorage中。如:
3、跳转到后台管理系统的主页面
1)、处理(动态的)菜单
1.1)、思路:
定义一个完整菜单的数据,然后,根据后端返回回来的权限(checkedkeys),进行过滤。
[jcode](https://code.juejin.cn/pen/7251052382254497844)
1.2)、显示动态菜单。
每个人可以根据自己使用的UI组件库。把上面的“getCurrentMenus ”函数的返回数据进行渲染。
2)、处理(动态)路由配置
2.1)、思路
思路和菜单差不多。定义所有的路由配置数组。根据后端返回来的checkedkeys,进行过滤。
2.2)、界面
每个人根据自己使用的路由版本。把上述代码中 “gettCurrentRoutes” 函数的返回值进行渲染。
3)、CRUD的权限。
CRUD的权限思路:根据后端返回的权限数据(如,这种用CRUD字母标识:"0-1-0-R", "0-1-0-U", "0-1-0-D"),通过路由传参,在组件里,显示或者隐藏对应的按钮即可。