一.动态路由权限(例子在尚品汇后台项目的store/use.js 和 router/index.js里)
1.权限管理,就是你输入相应的账号密码,就会出现你这个权限对应的菜单栏。
2.我们要对路由的权限管理有一定的认识,权限管理就是不同的角色登录管理系统,所看到的菜单栏是不一样的,比如超级管理员可以看到完整的菜单栏,但是其他角色可能只能看到菜单栏中的某些菜单,这就是权限管理。
3.那我们是怎么做到权限管理的呢?看下面,
首先我们在vuex里面的actions里调登录接口获取了登陆时的用户信息,返回的数据包括用户名,用户头像,routes(不同的用户应该展示哪些菜单的标记),roles(用户角色信息),buttons(按钮的信息:按钮权限用的标记)。将这些信息储存到state里面,
4.接下来就拿服务器返回过来的信息routes(不同的用户应该展示哪些菜单的标记)去和路由里面原来的路由去比较,需要先把原来的路由进行拆分,拆分为:
常量路由(任何角色都可以看见的路由:登录页,404页,首页echars),
异步路由(不同的角色,看到的不同),
任意路由(当路径出现错误的时候重定向404),
5.定义一个函数,将原来的路由和routes进行对比,过滤出当前登录用户最终需要展示的异步路由,最终将需要展示的异步路由和原来的常量路由,任意路由进行合并,这个最终合并的路由就是最终展示出来的路由,这样就实现了不同用户登录进来可以看到不同的路由了。
二.按钮权限(例子在view/test和store/use.js里)
1.按钮权限:分配了菜单权限,还可以分配按钮权限,我们可以直接在页面中操作增删改查来直接分配按钮权限,然后再去路由里面增加页面,去页面里面增加按钮就可以了,然后再给每个按钮增加一个判断,看state里面有没有存储分配的按钮权限,分配给你了就显示这个按钮,没有分配给你按钮权限,就不显示这个按钮。
三.菜单权限