我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vuerouter的addRoute方法实现控制权限方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vuerouter的addRoute方法实现控制权限方法详解

路由分为静态路由和动态路由

静态路由和动态路由的优缺点

1、中大型项目,采用的都是动态路由方式,因为后台导航目录运营人员可能会新增菜单,新增菜单后,前端人员得在路由表手动填加上,这样导航才能点击才能对应上页面,这样比较麻烦。

2、如果是动态路由,运营人员新增目录后,因为我是动态路由获取永远是最新的路径,一次性通过动态填加的方式加进去,后边就不用管路由的事了,只关心页面就可以了,也是对权限管理的一种方法。

动态路由实现思路

在全局路由守卫中,先判断token值有没有。有的话先看是否存储过,如果存储过直接,页面调用渲染,如果没有,就请求接口,把路由表存储下,除非没有token,跳转登录页面

路由表里-把那些常规路由(不需要权限的路由,事先都写到路由表里)。把需要权限的路由通过router.addRoute()动态填加到对应的子路由里 。

动态填加的路由需要处理下。因为后端传给你的是树状结构,一般前端需要把树结构处理成列表结构(通过递归,不断的获取路径,名字那些信息),填加到路由表里。(我没写 )

动态路由遇到的问题与解决方式

  1. 登录后路由表里在次加载一遍动态路由-解决第1次页面点击找不到路径问题,因为路由是动态生成的,登录后路由没有被在次生成,路由表里是空的。所以在路由里要在次生成一遍
  2. 也有可能是因为你的路由表里有通配路由,你的书写位置也不是入口文件处,可能就是404页面。
  3. 登录后跳转其它页面,如果刷新,页面找不到问题?原因是路由是动态的,它是在登录后生成的,而其它页面没有在次生成动态路由,所以就找不到。解决办法:可在路由里,在生成一遍动态路由。这样不管在后台哪个页面,一刷新都会先执行。(路由先走)
  4. 具体方法是在入口文件当中,通过全局前置路由守卫获取router路由(考虑到在main.js中这个文件比较繁琐),新文件重新导入

获取主路由的一个子数组信息。

router.beforeEach((to,from,next)=>{
    console.log(router);
    console.log(router.options.routes);
    console.log(router.options.routes[0]);
    console.log(router.options.routes[0].children);

    if(router.options.routes[0].children.length == 4 && to.path!="/login"){
        router.options.routes[0].children.unshift({path:"test",component:()=>import("@/views/test.vue")})
        router.addRoute(router.options.routes[0]);
        next({
            path: to.path, // 动态添加一个新的路由
            replace: true // 重定向,为了让刚刚添加的路由规则生效
        });
     }else{
         next();
    }   
})

也可以写成:

let newT = router.options.routes[0];
if (newT.children.length == 4 && to.path != "/login") {//条件保护,防止全局路由守卫死循环执行。
    newT.children.unshift({
        path: "test",
        component: () => import("@/views/test.vue")
    }) //给子路由添加一条数据
    router.addRoute(newT);
    next({
        path: to.path,
        replace: true
    });
} else {
    next()
}

可以看的出来:addRoute 添加一条新的路由记录是一个对象 router.addRoute({});同时这个路由作为现有路由的子路由,如果路由有一个name,或者地址一样,就会删除之前的路由信息,重新加进去这个路由。或者已经有一个与之名字相同的路由,它会先删除之前的路由;

注意:新添加的路由并不会触发新的导航

需要:

next({
    path: to.path, // 动态添加一个新的路由
    replace: true // 重定向,为了让刚刚添加的路由规则生效
});

vue-router的addRoute方法实现权限控制

到此这篇关于Vue router的addRoute方法实现控制权限方法详解的文章就介绍到这了,更多相关Vue控制权限内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vuerouter的addRoute方法实现控制权限方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue权限控制与管理的实现方法是什么

本篇内容介绍了“vue权限控制与管理的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 菜单权限菜单权限:控制用户在系统中能
2023-07-05

vue各种权限控制与管理实现的方法是什么

这篇“vue各种权限控制与管理实现的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue各种权限控制与管理实现的方
2023-07-05

uniapp Android解决 APP菜单、按钮权限控制方法

这篇文章主要介绍了uniapp Android解决 APP菜单、按钮权限控制方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-01-15

Linux系统配置Linux访问控制列表的权限控制方法

本篇内容主要讲解“Linux系统配置Linux访问控制列表的权限控制方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统配置Linux访问控制列表的权限控制方法”吧!使用拥有权限控制
2023-06-13

使用Python实现控制摄像头的方法详解

当今,随着计算机技术的发展,摄像头已经成为了人们生活中不可或缺的一部分。而Python作为一种流行的编程语言,也可以轻松地控制和操作摄像头。本文将介绍如何使用Python中的常用库(例如OpenCV和Tkinter)来控制和操作摄像头,需要的可以参考一下
2023-03-10

Java限流实现的几种方法详解

这篇文章主要介绍了Java限流实现的几种方法,通俗的说,限流就是限制一段时间内,用户访问资源的次数,减轻服务器压力,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-12-03

详解vue各种权限控制与管理的实现思路

本篇文章给大家带来了关于vue的相关知识,其中主要详细介绍了vue各种权限控制与管理的实现思路,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。
2023-05-14

vuedirective全局自定义指令实现按钮级别权限控制的操作方法

这篇文章主要介绍了vuedirective全局自定义指令实现按钮级别权限控制,本文结合实例代码对基本概念做了详细讲解,需要的朋友可以参考下
2023-02-06

基于resty security的Api权限控制与事务支持的方法

这篇文章主要介绍了基于resty security的Api权限控制与事务支持的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于resty security的Api权限控制与事务支持的方法文章都会有所收获,
2023-06-29

ASP.NET Core基于滑动窗口实现限流控制的方法

今天小编给大家分享一下ASP.NET Core基于滑动窗口实现限流控制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前
2023-06-29

编程热搜

目录