weixin_45161039
一片舟
采纳率100%
2021-03-05 13:34

有没有哪位大佬来帮我看看路由动态添加跳转404和权限的问题

50
已结题

有没有哪位大佬来帮我看看路由动态添加跳转404和权限的问题

  • 点赞
  • 收藏
  • 复制链接分享

4条回答

  • CJG753951 Java全栈路线 1月前
    router.beforeEach((to, from, next) => {
      // 添加动态(菜单)路由
      // 1. 已经添加 or 全局路由, 直接访问
      // 2. 获取菜单列表, 添加并保存本地存储
      if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
        next()
      } else {
        if (cookies.get('token')) {
          const code = document.referrer.toString()
          Vue.prototype.$axios.get('/menu/list', {
            headers: {
              'Accept-Language': sessionStorage.getItem('language') === 'en' ? 'en-US' : 'zh-CN',
              'system-code': 'hlb-' + (code ? code.substring(7, code.indexOf('.')) : 'pmkt')
            }
          })
            .then(({data}) => {
              if (data && data.code === 200) {
                fnAddDynamicMenuRoutes(data.list)
                router.options.isAddDynamicMenuRoutes = true
                sessionStorage.setItem('menuList', JSON.stringify(data.list || '[]'))
                sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
                next({...to, replace: true})
              } else if (data.code === 1002) {
                Vue.prototype.$message({
                  message: data.msg,
                  type: 'error'
                })
                clearLoginInfo()
                router.push({name: 'login'})
              } else {
                sessionStorage.setItem('menuList', '[]')
                sessionStorage.setItem('permissions', '[]')
                next()
              }
            }).catch((e) => {
            console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
            router.push({name: 'login'})
          })
        } else {
          router.push({name: 'login'})
        }
      }
    })

    路由的动态添加可以在router/index.js进行解析。404 问题可能是你添加了菜单,但是前端这边没有对应的组件页面之类的。

    点赞 评论 复制链接分享
  • bill20100829 歇歇 1月前
    const routes =[{
    path: '/1ogin',
    name: 'Login',
    component:()=>
    import ( ' ../views/Login.vue ' )
    }]
    const a = [{
    path: ' /search',
    name: 'Search ',
    component:()=>
    import ( '../views/Search.vue ')
    }]
    a.push({
    path: '/*',
    name: '404',
    component: ()=>
    import ('../views/404.vue ')
    })
    router.addRoutes(a);
    const router = new Router({
    mode: 'history'.
    base: process.env.BASE_URL,
    routes: routes
    })
    
    点赞 评论 复制链接分享
  • kof98765 kof98765 1月前

    就这么问,没点信息?

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1月前

    远程看过源码了...路由里有个路径... 直接把所有的页面跳转到404了...

    业务逻辑需要重写...一直反复横跳/login路由,导致浏览器卡死了...

    这事肯定是哪个即将离职然后....倒霉的程序员做的

    点赞 评论 复制链接分享