当前位置:首页 > VUE

Vue怎么实现权限验证

2026-01-21 05:00:03VUE

Vue权限验证实现方法

路由守卫验证

router.js中配置全局前置守卫,通过meta字段标记路由权限要求。检查用户权限是否匹配,未匹配则跳转到登录页或403页面。

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

  if (requiresAuth && !hasToken) {
    next('/login')
  } else {
    next()
  }
})

动态路由加载

根据用户权限动态生成可访问路由表。先定义完整路由结构,通过addRoutes方法动态添加符合权限的路由。

// 过滤有权限的路由
function filterAsyncRoutes(routes, roles) {
  return routes.filter(route => {
    if (hasPermission(roles, route)) {
      if (route.children) {
        route.children = filterAsyncRoutes(route.children, roles)
      }
      return true
    }
    return false
  })
}

指令级控制

创建v-permission自定义指令,用于控制按钮/元素的显示隐藏。指令内部比对当前用户权限与要求权限。

Vue.directive('permission', {
  inserted(el, binding) {
    const { value } = binding
    const permissions = store.getters.permissions

    if (value && !permissions.includes(value)) {
      el.parentNode && el.parentNode.removeChild(el)
    }
  }
})

API请求拦截

在axios拦截器中检查请求权限。未携带token的请求直接拒绝,已过期的token触发刷新或重新登录流程。

service.interceptors.request.use(
  config => {
    if (store.getters.token) {
      config.headers['Authorization'] = 'Bearer ' + getToken()
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

权限数据存储

使用Vuex集中管理权限状态。包括用户角色、权限列表等信息,并提供权限校验方法供组件调用。

const store = new Vuex.Store({
  state: {
    roles: [],
    permissions: []
  },
  getters: {
    hasPermission: state => permission => {
      return state.permissions.includes(permission)
    }
  }
})

页面元素控制

在组件内使用计算属性控制界面元素的渲染。结合Vuex中的权限状态进行条件判断。

computed: {
  showEditButton() {
    return this.$store.getters.hasPermission('edit')
  }
}

服务端验证配合

前端验证需与后端配合,确保所有关键操作都经过服务端权限校验。前端路由和按钮控制仅作为用户体验优化。

错误处理

统一处理权限不足的异常情况。捕获403错误码时跳转至无权限提示页面,401错误码时清除本地凭证并重定向到登录页。

service.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 403) {
      router.push('/403')
    }
    return Promise.reject(error)
  }
)

Vue怎么实现权限验证

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

相关文章

用Vue实现

用Vue实现

以下是使用 Vue 实现常见功能的几种方法: 数据绑定与响应式更新 使用 v-model 实现双向数据绑定: <template> <input v-model="mes…

vue实现权限

vue实现权限

Vue 实现权限管理的方法 在 Vue 项目中实现权限管理通常涉及路由控制、按钮权限和接口权限。以下是几种常见的实现方式: 路由权限控制 通过动态路由的方式,根据用户权限加载不同的路由配置。可以使…

Vue实现多站点

Vue实现多站点

Vue实现多站点的方案 Vue.js可以通过多种方式实现多站点架构,具体方案取决于项目需求和规模。以下是常见的几种实现方法: 基于动态路由的SPA方案 适用于中小型多站点项目,所有站点共享同一个…

vue实现列表权限

vue实现列表权限

实现列表权限的基本思路 在Vue中实现列表权限通常涉及根据用户角色或权限动态渲染列表内容。核心逻辑是通过权限判断控制列表项的显示、隐藏或操作权限。 权限数据管理 使用Vuex或Pinia存储全局权…

权限管理vue如何实现

权限管理vue如何实现

基于路由的权限控制 在Vue中可以通过路由守卫实现页面级权限控制。定义路由时添加meta字段标记权限角色: const routes = [ { path: '/admin',…

用Vue实现

用Vue实现

Vue实现方法 安装Vue 确保已安装Node.js和npm。使用Vue CLI创建新项目: npm install -g @vue/cli vue create project-name cd p…