Vue 路由守卫怎么处理后台管理系统的按钮级权限过滤

千敏大大_4962

千敏大大_4962

2026-10-21

339人浏览

原创

路由守卫不处理按钮级权限,仅控制页面跳转;按钮权限由自定义指令v-permission实现,通过比对用户权限数组与指令传入的权限码(如['user:delete'])决定按钮显隐,确保页面内操作入口精细化控制。

vue 路由守卫怎么处理后台管理系统的按钮级权限过滤

路由守卫本身不直接处理按钮级权限,它的职责是控制页面跳转,而不是控制页面内元素的显隐。按钮级权限需要配合自定义指令 + 权限数据,在 DOM 渲染阶段做判断。

按钮权限的核心逻辑:靠指令,不是守卫

用户进入某个页面后,页面已渲染,此时路由守卫早已执行完毕。按钮是否显示、是否可点击,取决于当前用户是否拥有对应操作权限(如 user:delete、order:export)。这个判断必须在组件挂载或更新时实时进行,因此采用 Vue 自定义指令是最自然、解耦性最好的方式。

典型实现思路是:

  • 登录后从后端获取用户全部权限标识(字符串数组,如 ['user:view', 'user:edit', 'order:list'])
  • 将该权限列表存入 Pinia/Vuex 或 localStorage(注意:仅作前端展示控制,关键操作仍需后端鉴权)
  • 定义 v-permission 指令,接收权限码数组作为参数
  • 指令内部比对当前用户权限是否包含任一传入码,决定是否隐藏按钮

自定义指令示例(Vue 3 + Pinia)

在 src/directives/permission.ts 中:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习