zoukankan      html  css  js  c++  java
  • VUE 动态注入路由白屏,再次刷新才显示页面问题

    问题描述:
       由于系统需要动态注入路由,刚开始在路由拦截里面根据账号权限动态获取路由,然后注入到本地路由中,代码如下:
     

    // 尝试获取本地 store 用户信息中权限字段
    const hasRoles = store.getters.roles && store.getters.roles.length > 0
    if (hasRoles) {
      next()
    } else {
      try {
        // 用token换取用户信息
        store.dispatch('user/getInfo').then(roles => {
          if (!roles) new Error('roles error!')
          // 根据获取的用户权限映射对应的路由信息
          store.dispatch('permission/generateRoutes', roles).then(accessRoutes => {
            if (!accessRoutes) new Error('accessRoutes error!')
            // 动态加入路由
            router.addRoutes(accessRoutes)
            // 确保路由完整性,设置replace 为true 这样导航就不会留下历史记录。
            next({
              ...to,
              replace: true
            })
          })
        })
      } catch (error) {
        // 删除本地token 并且重新登陆
        await store.dispatch('user/resetToken')
        Message.error(error || 'Has Error')
        next(`/login?redirect=${to.path}`)
        NProgress.done()
      }
    }

    这样写只有在登陆之后刷新页面才会动态注入,解决办法就是在登陆之后执行一下 红色字体部分代码

  • 相关阅读:
    数据库查询语言(DQL)
    MySQL的约束
    MySQL的数据类型
    SQL
    MySQL简介
    个人项目网址
    Nexus Repository Manager(CVE-2020-10199/10204)漏洞分析及回显利用方法的简单讨论
    Joomla 3.0.0
    Groovy 反序列化漏洞分析(CVE-2015-3253)
    PHP反序列化漏洞新攻击面(BlackHat 2018)
  • 原文地址:https://www.cnblogs.com/victorlyw/p/12419881.html
Copyright © 2011-2022 走看看