vue-element-admin-template 權限控制整理

本文详细介绍了如何在vue-element-admin模板中实现权限控制。通过登录获取的token得到用户角色,动态计算并加载对应权限的路由。使用vuex全局管理数据和操作,结合mock数据在mock/role/routes.js中设置角色路由,在api/role.js中处理角色API请求。在router/index.js中配置动态路由和权限,在store/permission.js中匹配用户权限和路由权限,以及在utils/permission.js中进行路由权限比较。最后在sidebar/index.vue中更新计算属性完成权限控制设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue-element-admin是個強大的管理後台框架

https://github.com/PanJiaChen/vue-element-admin/tree/master/src/directive

經過了一些琢磨,終於知道vue-element-admin-template如何增加權限控制

首先,先把邏輯關係理清楚:

          登錄後通過token獲取用戶對應的角色role,動態的根據用戶role算出其對應的有權限的路由,通過rotuer.addRoutes動態加載這些路由

      數據和操作通過vuex全局管理控制

如果繼續用mock模擬數據,那麼需要在mock增加role數據route.js 動態路由和通用路由 

mock/role/routes.js

//通用路由
export const constantRoutes = [
  
  {
    path: '/login',
    component: 'views/login/index',
    hidden: true
  },
  {
    path: '/404',
    component: 'views/error-page/404',
    hidden: true
  },
  {
    path: '/401',
    component: 'views/error-page/401',
    hidden: true
  },
  {
    path: '',
    component: 'layout/Layout',
    redirect: 'dashboard',
    children: [
      {
        path: 'dashboard',
        component: 'views/dashboard/index',
        name: 'Dashboard',
        meta: { title: 'Dashboard', icon: 'dashboard', affix: true }
      }
    ]
  },
  {
    path: '/example',
    component: Layout,
    redirect: '/example/table',
    name: 'Example',
    meta: { title: 'Example', icon: 'example' },
    children: [
      {
        path: 'table',
        name: 'Table',
        component: () => import('@/views/table/index'),
        meta: { title: 'Table', icon: 'table' }
      },
      {
        path: 'tree',
        name: 'Tree',
        component: () => import('@/views/tree/index'),
        meta: { title: 'Tree', icon: 'tree' }
      }
    ]
  },
  
]

//動態路由
export const asyncRoutes = [
  {
    path: '/nested',
    component: 'layout/Layout',
    redirect: '/nested/menu1/menu1-1',
    name: 'Nested',
    meta: {
      title: 'Nested',
      icon: 'nested'
    },
    children: [
      {
        path: 'menu1',
        component: 'v
### Vue-element-adminVue-admin-template 的对比 #### 功能差异 Vue-element-admin 是一个基于 Vue.js 和 Element UI 构建的后台前端解决方案,它提供了丰富的功能模块和组件支持。其主要特点在于高度集成化的设计模式以及完善的权限管理机制[^1]。相比之下,vue-admin-template 则是一个更为轻量级的基础模板项目,适合初学者快速搭建简单的管理系统框架。该模板专注于提供基础结构而不包含过多预设的功能模块[^2]。 #### 使用场景分析 对于复杂的企业应用开发需求来说,选择 **vue-element-admin** 更加合适因为它已经内置了许多实用特性如国际化、多环境配置和支持动态路由加载等功能[^3]。而如果开发者只是希望获得一个简洁明了且易于扩展的基础架构,则可以考虑采用 **vue-admin-template**, 它允许用户根据实际需要自行定制所需部分从而减少不必要的依赖引入[^4]。 #### 技术实现上的不同之处 在技术层面, vue-element-admin 运用了 Vuex 来处理全局状态管理和 Axios 实现 HTTP 请求拦截器/响应处理器; 同时还通过 Sass 变量覆盖来调整主题样式配色方案以便于满足个性化设计要求[^5]. 而 vue-admin-template 主要关注点放在如何构建最小化的可行产品(MVP),因此它的代码逻辑相对简单直接,并未涉及复杂的业务流程控制或者高级特性的封装[^6]. ```javascript // Example of Vuex store setup in vue-element-admin import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { count: 0, }, mutations: { increment(state) { state.count++ } } }) ``` ```html <!-- A simple layout example within vue-admin-template --> <template> <div id="app"> <router-view/> </div> </template> <script> export default {} </script> ```
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值