Vue-element-admin: addRoutes后,我换一个账号登录权限不一样了,怎么删除之前添加的的路由?

Created on 20 Jan 2018  ·  10Comments  ·  Source: PanJiaChen/vue-element-admin

目前是判断权限生成可访问的路由后addRoutes进去。但是退出登录后换一个账号登录,然后又重新生成一次,之后addRoutes。
问题1:控制台会警告提示[vue-router] Duplicate named routes,就是有重复的路由add进去了。
问题2:可能存在,直接输入地址栏跳转到前一账号可访问的路由(目前是在输地址栏后跳转,整个单页应用会重新init一次,根据当前缓存的账号权限重新生成routes,此问题暂时好像不需要解决)

会不会有方法去删除已经添加的routes?我看过vue-router的文档没有写这个方法。

RFC

Most helpful comment

const createRouter = () => new VueRouter({
    linkActiveClass: 'active',
    mode: 'hash',
    base: './',
    routes: constantRouterMap
});
const router = createRouter();

在addRoutes之前重置matcher 即可解决
```
router.matcher = createRouter().matcher;
router.addRoutes(store.getters.addRouters);

All 10 comments

暂时没有remove routes的方法。所以现在的做法是退出登录之后刷新一下页面。
https://github.com/PanJiaChen/vue-element-admin/blob/700e08b7951e9b6947ec0521af93354280776b2e/src/views/layout/components/Navbar.vue#L74-L77

同样,当session丢失之后,切换不同权限当账号登陆,那么新的权限菜单不会被立即重新生成,需要刷新页面。

官方相关 issue

我的做法是直接location.reload() 跟 @PanJiaChen 一样.... 😂

难道就没有办法解决,切换用户登录,动态路由重复的问题么?或者说清除路由,退出刷新页面到登录这种体验方式个人觉得有点不好吧,应该不会无解吧

router.matcher,了解一下~

@zhangxlgj reload算最快捷、方便的方法了,之前有篇拙作可以参考下?[快速重置vuex数据](https://lonhon.top/2018/05/27/Vuex-reset-data-by-location-reload/

const createRouter = () => new VueRouter({
    linkActiveClass: 'active',
    mode: 'hash',
    base: './',
    routes: constantRouterMap
});
const router = createRouter();

在addRoutes之前重置matcher 即可解决
```
router.matcher = createRouter().matcher;
router.addRoutes(store.getters.addRouters);

@TY-LIU 这个方法可行,4.0版本已经基于这个实现了路由的重置。

之后会写一份文档来说明。

@TY-LIU 这个方法可行,4.0版本已经基于这个实现了路由的重置。

之后会写一份文档来说明。

请问你在哪里得知4.0版本已经基于这个实现了路由的重置?我也想看看相关资料,谢谢

Was this page helpful?
0 / 5 - 0 ratings

Related issues

evan-lin9 picture evan-lin9  ·  4Comments

nacimgoura picture nacimgoura  ·  3Comments

yanlee26 picture yanlee26  ·  3Comments

eladcandroid picture eladcandroid  ·  4Comments

gateslu picture gateslu  ·  4Comments