当前位置:首页 > VUE

vue的权限控制实现

2026-01-20 11:00:49VUE

Vue 权限控制实现方法

路由级权限控制

通过路由守卫(beforeEach)实现动态路由过滤,结合用户角色控制可访问路由表。典型代码如下:

// router.js
router.beforeEach((to, from, next) => {
  const hasPermission = checkUserPermission(to.meta.roles)
  if (hasPermission) next()
  else next('/403')
})

组件级权限控制

使用自定义指令v-permission控制组件渲染,适用于按钮/菜单等细粒度控制:

// main.js
Vue.directive('permission', {
  inserted(el, binding) {
    if (!checkPermission(binding.value)) {
      el.parentNode.removeChild(el)
    }
  }
})

接口级权限控制

在请求拦截器中添加权限验证:

// axios.interceptors.request.use
config.headers['X-Access-Token'] = getToken()
if (config.url.includes('/admin') && !isAdmin()) {
  return Promise.reject(new Error('无权限访问'))
}

动态菜单生成

根据权限树生成可访问菜单:

function filterAsyncRoutes(routes, roles) {
  return routes.filter(route => {
    if (hasPermission(roles, route.meta?.roles)) {
      if (route.children) {
        route.children = filterAsyncRoutes(route.children, roles)
      }
      return true
    }
    return false
  })
}

状态管理集成

Vuex中存储权限信息便于全局访问:

// store/modules/permission.js
state: {
  routes: [],
  addRoutes: []
},
mutations: {
  SET_ROUTES(state, routes) {
    state.addRoutes = routes
    state.routes = constantRoutes.concat(routes)
  }
}

最佳实践建议

  • 采用RBAC(基于角色的访问控制)模型设计权限系统
  • 后端应进行二次权限验证确保安全性
  • 敏感操作需结合验证码或二次确认
  • 权限变更时及时清除前端缓存

常见问题处理

权限失效时自动跳转登录页:

vue的权限控制实现

router.onError((error) => {
  if (/Unauthorized/.test(error.message)) {
    removeToken()
    next({ path: '/login' })
  }
})

标签: 权限vue
分享给朋友:

相关文章

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目 使…