vue-router之退出处理

1、对于vue-router3 (vue2) 官方没有提供删除方法

策略:创建新的router对象,将matcher 赋值给旧的

const router1=new Vue ({...})  

const router2=new Vue ({...})  

router1.matcher = router2.matcher

const createRouter = () => new Router({
  // mode: 'history', // require service support
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

2、vuew-router4 (vue3) 提供了

removeRoute 方法删除注册路由,
export function resetRouter(){
    let routers = router.getRoutes()
    routers.map(it=>{
        if(!['login','404','notFind'].includes(it.name)){
            router.removeRoute(it.name)
        }
    })
}

3、整体方案:

删除token,跳转到登录页,同时清除已注册路由(防止切换角色后还能访问另一个角色的权限),beforeEach中加有无token检测

你可能感兴趣的:(web前端,vue.js,javascript,前端)