前言
总结修改vue-admin-template配置动态路由的过程。
1.在store文件中添加permission.js文件
1 | import { asyncRoutes, constantRoutes } from '@/router' |
2.将store/index.js换一种代码形式,改为:
1 | import Vue from 'vue' |
3.在store/getter.js文件中添加:
1 | permission_routes: state => state.permission.routes |
4.在src/permission.js文件中,在获取用户信息后,获取动态菜单
1 | await store.dispatch('user/getInfo') |
后添加:
1 | // generate accessible routes map based on roles |
5.最后在laylout/components/sidebar/index.vue引入最终路由
(1)在mapGetters添加permission_routes
1 | ...mapGetters([ |
(2)将routes改为permission_routes
1 | <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" /> |
出现的问题:
在使用的过程中,加入权限模块后,刷新后权限控制的页面就默认跳转到404页面了,搞了半天终于解决了,原因是权限控制的路由模块是动态添加进去的,而我的404监听路由是在默认路由里面的,优先级比动态路由要高,所以刷新后默认先被404接管了,改一下,把404监听路由也放到动态路由的末尾就可以了。
处理方法:将constantRoutes中的以下代码注释后者删除。
1 | // 404 page must be placed at the end !!! |
把上面这个路由从constantRoutes转移到asyncRoutes中即可!
参考链接:https://blog.csdn.net/playboyanta123/article/details/106011821