当前位置:首页 > VUE

vue怎么实现权限

2026-01-17 04:32:26VUE

Vue 权限实现方法

路由权限控制

使用 vue-routerbeforeEach 钩子进行路由拦截,结合用户角色或权限列表过滤可访问路由。

router.beforeEach((to, from, next) => {
  const hasPermission = checkUserPermission(to.meta.requiresAuth)
  if (to.meta.requiresAuth && !hasPermission) {
    next('/login')
  } else {
    next()
  }
})

动态路由添加

根据用户权限动态生成路由表,通过 router.addRoutes 添加可访问路由。

vue怎么实现权限

// 过滤有权限的路由
const accessedRoutes = asyncRoutes.filter(route => {
  return hasPermission(route.meta.roles)
})
router.addRoutes(accessedRoutes)

指令式权限控制

创建自定义指令 v-permission,用于控制页面元素的显示隐藏。

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

全局权限校验方法

在 Vue 原型上挂载权限校验方法,方便组件内调用。

vue怎么实现权限

Vue.prototype.$_has = function(permission) {
  return this.$store.state.user.permissions.includes(permission)
}

状态管理集成

使用 Vuex 存储用户权限信息,保持权限状态全局可访问。

const store = new Vuex.Store({
  state: {
    permissions: []
  },
  mutations: {
    SET_PERMISSIONS(state, permissions) {
      state.permissions = permissions
    }
  }
})

后端配合方案

前端存储权限标识,实际权限校验应由后端接口二次验证,防止前端篡改。

// API 请求拦截器
axios.interceptors.response.use(response => {
  if (response.data.code === 403) {
    router.push('/403')
  }
  return response
})

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

相关文章

vue搜索过后实现分页

vue搜索过后实现分页

Vue 实现搜索后分页功能 数据绑定与搜索逻辑 在 Vue 组件中定义必要的数据属性: data() { return { searchQuery: '', currentPag…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue 实现权限

vue 实现权限

Vue 实现权限控制的方法 在 Vue 项目中实现权限控制通常涉及前端路由、组件和按钮级别的权限管理。以下是几种常见的实现方式: 路由权限控制 通过路由守卫实现权限验证,过滤用户无权访问的路由:…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…

vue实现getapp

vue实现getapp

Vue 中实现全局获取应用实例的方法 在 Vue 3 中,可以通过 getCurrentInstance 方法获取当前组件实例,但需要明确其使用场景和限制。以下是具体实现方式: 方法一:通过 get…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…