Vu路由死循环,以及addRouter怎么使用

发布于 2022-09-12 04:25:16 字数 1619 浏览 10 评论 0

asyncRouterMap,constantRouterMapasyncRouterMap 是需要权限处理的路由,constantRouterMap是登陆和404页面路由数组
上代码

console.log(asyncRouterMap,'asyncRouterMap')
console.log(router);
const whiteList = ['/login'];
const userSet = store.state.user;
console.log(userSet,'userSet');
store.commit(Keys.InitialiseUerInfo,(isLogin)=>{
  
})
router.beforeEach(async(to, from, next) => {
console.log(to.path,to.name)
  //判断有没有登陆

  if (userSet.isLogin) {
    console.log(userSet.isLogin,'userSet.isLogin')
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      if (userSet.userRole) {
        try {
          let addRoutes
          let roles = userSet.userRole;
          if(roles == 'ROLE_ADMIN'){
            addRoutes= [...asyncRouterMap,...constantRouterMap]
          }else{
            addRoutes= [...constantRouterMap]
          }
          const accessRoutes = await store.dispatch('GenerateRoutes', roles)
          // dynamically add accessible routes
          router.addRoutes(accessRoutes)
          router.options.routes = router.options.routes.concat(addRoutes)
          console.log(addRoutes,accessRoutes)
          next({ ...to, replace: true })
        } catch (error) {
          // remove token and go to login page to re-login
          await store.dispatch(this.$storeKeys.Asyn_handleLogout).then()
          next(`/login?redirect=${to.path}`)
        }
      }else{
        next()
      }
    }
  } else {
    /* has no token*/
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next(`/login?redirect=${to.path}`)
    }
  }
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文