Vue中的权限管理和Mixin混入

本文详细介绍了在Vue.js应用中如何实现权限管理,包括在Vuex中创建Permission模块,动态更新路由权限列表,处理静态与动态路由的合并,配置并导出路由,以及退出时的路由重置。同时,还探讨了Mixin混入的使用,包括创建Mixin对象,main.js中的注册,以及在组件中的应用。
摘要由CSDN通过智能技术生成

权限管理

1. Vuex中Permission

新增store/modules/permission.js

/*
 * @Author: CookChopper
 * @Date: 2021-09-06 18:44:20
 * @LastEditTime: 2021-09-06 18:51:22
 * @LastEditors: CookChopper
 * @Description:
 */
// asyncRoutes 是动态路由列表
// constantRoutes 是静态路由列表
import {
    asyncRoutes, constantRoutes } from '@/router'


const state = {
   
  routes: constantRoutes
}

const mutations = {
   
  // newRoutes是用户所具有的权限列表(Array)
  setRoutes(state, newRoutes) {
   
    state.routes = [...constantRoutes, ...newRoutes]
  }
}

const actions = {
   
  // 将用户所具有的权限列表存入routes
  filterRoutes(context, menus) {
   
    const routes = []
    menus.forEach(key => {
   
      routes.push(...asyncRoutes.filter(item => item.name === key))
    })
    context.commit('setRoutes', routes) //state中的routes是为了侧边栏菜单
    return routes  // return 权限列表是为了给addRoutes添加动态路由
  }
}

export default {
   
  namespaced: true,
  state,
  mutations,
  actions
}

2. 在store/index.js注册Permission

@/store/index.js

在这里插入代码片/*
 * @Author: CookChopper
 * @Date: 2021-07-07 21:36:48
 * @LastEditTime: 2021-09-06 18:48:26
 * @LastEditors: CookChopper
 * @Description:
 */
import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'
import permission from './modules/permission'

Vue.use(Vuex)

const store = new Vuex.Store({
   
  modules: {
   
    app,
    settings,
    user,
    permission //权限管理的Vuex
  },
  getters
})

export default store

3.更新Vuex中的routes权限列表

@/permission.js

/*
 * @Author: CookChopper
 * @Date: 2021-07-07 21:36:48
 * @LastEditTime: 2021-09-06 19:37:54
 * @LastEditors: CookChopper
 * @Description: 权限管理
 */
import router from '@/router'
import store from '@/store'

const whiteList = ['/login', '/404']

// 前置路由守卫
router.beforeEach(async (to, from, next) => {
   
  if (store.getters
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值