现在权限相关管理系统用的框架都是 element 提供的 vue-element-admin 模板框架比较常见。权限控制通常分为三大块:
- 菜单权限控制
- 按钮权限控制
- 请求 url 权限控制(通常后端完成)
权限管理在前端主要体现在对菜单访问权限的控制。
- 按钮权限控制很简单,靠后端返回按钮权限标识,然后在前端进行相似隐藏操作 v-if/disabled。
- url 权限控制主要靠后端来完成
- 菜单的权限控制相对复杂一些。
- 需要在路由设计时,就拆分出静态路由和动态路由
- 静态路由:所有用户都能访问到的路由,不会动态变化的(登录页、首页、404 页)
- 动态路由:动态控制的路由,只有用户有对应的权限标识才能加载(审批页、社保页、权限管理页…)
- 当用户登录进入首页时,需要立刻发送请求获取个人信息(包含权限的标识数组)
- 利用权限信息的标识,筛选出合适的动态路由,通过动态路由的==addroutes==方法,动态添加路由即可。
- 现在有个问题: router.options.routes(拿到的是默认的路由项,拿不到新增,它不是响应式的。)因此为了能够正确的显示菜单,为了能欧将来正确的获取到用户路由,我们需要 vuex 来管理 routes 路由数组。
- 利用 vuex 中的 routes ,来动态渲染菜单。
- 需要在路由设计时,就拆分出静态路由和动态路由