当前位置:首页 > VUE

vue实现路由权限控制

2026-02-22 06:06:43VUE

Vue 路由权限控制实现方法

路由守卫全局控制

router/index.js 中通过 beforeEach 钩子进行全局拦截。从本地存储(如 localStorage)获取用户权限信息,与路由元信息 meta.requiresAuth 进行匹配。

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  const requiresAuth = to.matched.some(record => record.meta.requiresAuth)

  if (requiresAuth && !isAuthenticated) {
    next('/login')
  } else if (to.path === '/login' && isAuthenticated) {
    next('/dashboard')
  } else {
    next()
  }
})

动态路由表生成

根据用户角色动态生成可访问路由表。先定义基础路由(如登录页),登录后通过 addRoutes 添加权限路由。

// 权限路由配置
const adminRoutes = [...]
const userRoutes = [...]

// 动态添加路由
function generateRoutes(role) {
  const accessRoutes = role === 'admin' ? adminRoutes : userRoutes
  router.addRoutes(accessRoutes)
}

路由元信息控制

在路由配置中使用 meta 字段标记权限要求,结合 v-permission 自定义指令控制界面元素显示。

{
  path: '/admin',
  component: AdminPanel,
  meta: { 
    requiresAuth: true,
    roles: ['admin'] 
  }
}

服务端控制方案

前端传递 token 到服务端,服务端返回用户权限路由表。需配合 JWT 等认证方案实现。

axios.get('/api/user-routes').then(res => {
  const accessedRoutes = res.data
  router.addRoutes(accessedRoutes)
})

按钮级权限控制

通过自定义指令实现按钮粒度的权限控制,在指令中校验用户权限码。

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

权限数据持久化

使用 Vuex 集中管理权限状态,结合 localStorage 实现刷新后权限不丢失。

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

404页面处理

动态路由添加后需在最后捕获未匹配路由,避免刷新页面时出现 404。

vue实现路由权限控制

{
  path: '*',
  redirect: '/404',
  hidden: true
}

注意事项

  • 路由配置应拆分基础路由和权限路由
  • 动态添加路由需考虑页面刷新场景
  • 按钮权限与路由权限应保持一致
  • 敏感路由需服务端二次验证
  • 权限变更后需及时清理旧路由

标签: 路由权限
分享给朋友:

相关文章

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 中实现路由通常使用 Vue Router 库。以下是具体的实现步骤: 安装 Vue Router 在项目中通过 npm 或 yarn 安装 Vue Router:…

vue路由实现滑动

vue路由实现滑动

路由切换滑动动画实现 在Vue中实现路由切换时的滑动动画,可以通过Vue的过渡系统结合CSS动画或第三方库完成。以下是几种常见方法: 使用Vue过渡 + CSS动画 包裹<router-vie…

vue 实现权限管理

vue 实现权限管理

Vue 权限管理实现方案 权限管理通常分为路由权限和功能权限两部分,以下是具体实现方式: 路由权限控制 动态路由方案 用户登录后获取权限列表,过滤出有权限的路由 使用router.addRoute…

动态路由vue实现

动态路由vue实现

动态路由的实现方式 在Vue中实现动态路由通常有两种主要方式:基于用户权限的动态路由和基于参数变化的动态路由。这两种方式都能有效提升应用灵活性。 基于用户权限的动态路由 通过用户角色或权限动态生成可…

vue 实现路由弹窗

vue 实现路由弹窗

实现路由弹窗的基本思路 在Vue中实现路由弹窗的核心是利用路由参数或查询参数控制弹窗的显示,同时保持页面URL与弹窗状态的同步。常见方法包括动态路由、嵌套路由或通过<router-view>…

vue动态路由实现

vue动态路由实现

Vue 动态路由实现方法 动态路由是 Vue Router 的核心功能之一,允许根据参数动态匹配路由。以下是几种常见实现方式: 路由参数动态匹配 在路由配置中使用冒号 : 定义动态参数: cons…