路由模式

  • 常量路由(比如首页)
  • 异步路由(不同用户不同路由,根据权限来定的)
  • 任意路由(比如404)

vueAdmin当中使用路由权限

1.在路由注册的时候,分段注册 (默认只注册常量路由)

  • src\router\index.js

默认只注册常量路由

2.处理路由信息,并添加到route当中

  • 调用router当中的addRouter方法,传入的参数为数组(数组里面也就是路由信息)

  • src\store\modules\user.js当中,根据token获取到用户信息后(比如用户权限,可以用的路由有哪些),来对数据进行处理

    设置路由信息

  • 处理路由信息的函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
    *
    * @param {array} all 所有的异步路由信息
    * @param {array} selfRoutes 服务器获取到的当前账户所具有的异步路由信息
    */
    function getOwnAsyncRoutes(allAsyncRoutes,selfRoutes){
    return allAsyncRoutes.filter(item => {
    //当前账户异步路由信息包含了正在遍历的路由的name,则存入
    if(selfRoutes.includes(item.name)){
    //含有二级路由
    if(item.children && item.children.length){
    getOwnAsyncRoutes(item.children,selfRoutes);
    }
    return true;
    }
    });
    }

3.使用路由生成导航条的时候, 用处理后的路由信息(借此生成导航窗格)

  • \src\layout\components\Sidebar\index.vue当中修改(注意这里用mapGetters)

处理后的路由信息注册路由

  • 这里用的是mapGetters,所以这里也需要修改\src\store\getters.js

处理addRoutes动态添加路由后白屏的情况

  • 文件路径: src\permission.js

    1
    2
    3
    4
    next();//改为下面一行即可

    next({...to,replace:true});

    处理白屏