广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vuerouter的addRoute方法实现控制权限方法详解
  • 864
分享到

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

2024-04-02 19:04:59 864人浏览 八月长安
摘要

目录路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路动态路由遇到的问题与解决方式路由分为静态路由和动态路由 静态路由和动态路由的优缺点 1、中大型项目,采用的都是

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

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

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控制权限内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vuerouter的addRoute方法实现控制权限方法详解

本文链接: https://www.lsjlt.com/news/168315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Vuerouter的addRoute方法实现控制权限方法详解
    目录路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路动态路由遇到的问题与解决方式路由分为静态路由和动态路由 静态路由和动态路由的优缺点 1、中大型项目,采用的都是...
    99+
    2022-11-13
  • SpringSecurity动态权限的实现方法详解
    目录1. 动态管理权限规则1.1 数据库设计1.2 实战2. 测试最近在做 TienChin 项目,用的是 RuoYi-Vue 脚手架,在这个脚手架中,访问某个接口需要什么权限,这个...
    99+
    2022-11-13
  • vue权限控制与管理的实现方法是什么
    本篇内容介绍了“vue权限控制与管理的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 菜单权限菜单权限:控制用户在系统中能...
    99+
    2023-07-05
  • SpringMVC bean实现加载控制方法详解
    目录1、Spring配置类排除加载SpringMVC的bean2、Servlet容器配置类简洁开发1、Spring配置类排除加载SpringMVC的bean SpringMVC 通常...
    99+
    2022-11-13
  • uniapp Android解决 APP菜单、按钮权限控制方法
    目录【前言】【方法】【前言】 近日在开发一款使用uniapp做的APP时,遇到权限的控制需求,于是便采用如下方式进行校验(方法很多,只介绍这一种相对简单的)。 【方法】 示例代码如下...
    99+
    2023-01-15
    uniapp按钮权限控制 APP菜单
  • vue各种权限控制与管理实现的方法是什么
    这篇“vue各种权限控制与管理实现的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue各种权限控制与管理实现的方...
    99+
    2023-07-05
  • Java SpringBoot 使用拦截器作为权限控制的实现方法
    如何实现 首先拦截器是属于web这块的,那我们需要引入springboot web模块,具体版本在parent中 <dependency> <group...
    99+
    2022-11-12
  • Vue3纯前端实现Vue路由权限的方法详解
    目录前言RBAC模型代码实现登录菜单信息动态路由筛选总结前言 在开发管理后台时,都会存在多个角色登录,登录成功后,不同的角色会展示不同的菜单路由。这就是我们通常所说的动态路由权限,实...
    99+
    2022-11-13
  • Linux系统配置Linux访问控制列表的权限控制方法
    本篇内容主要讲解“Linux系统配置Linux访问控制列表的权限控制方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统配置Linux访问控制列表的权限控制方法”吧!使用拥有权限控制...
    99+
    2023-06-13
  • 使用Python实现控制摄像头的方法详解
    目录前言第一部分:环境搭建步骤一:安装 Python步骤二:安装 OpenCV步骤三:连接摄像头第二部分:摄像头基本操作1. 捕获视频帧2.保存视频总结前言 当今,随着计算机技术的发...
    99+
    2023-03-10
    Python实现控制摄像头 Python控制摄像头 Python 摄像头
  • Java限流实现的几种方法详解
    目录计数器信号量滑动窗口漏桶令牌桶测试示例代码计数器 计数器限流方式比较粗暴,一次访问就增加一次计数,在系统内设置每 N 秒的访问量,超过访问量的访问直接丢弃,从而实现限流访问。 具...
    99+
    2022-12-03
    Java限流 Java限流算法 Java限流方案
  • MongoDB开启权限认证的方法步骤详解
    前言 最近在生产环境中MongoDB已经使用有一段时间了,但对于MongoDB的数据存储一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),最近在酷壳网看了一篇技术文章(https://coo...
    99+
    2022-10-18
  • JQUERY实现左右权限的操作方法
    JQUERY实现左右权限的操作方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码:<!DOCTYP...
    99+
    2022-10-19
  • 基于resty security的Api权限控制与事务支持的方法
    这篇文章主要介绍了基于resty security的Api权限控制与事务支持的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于resty security的Api权限控制与事务支持的方...
    99+
    2023-06-29
  • 详解vue各种权限控制与管理的实现思路
    本篇文章给大家带来了关于vue的相关知识,其中主要详细介绍了vue各种权限控制与管理的实现思路,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。一、 菜单权限菜单权限:控制用户在系统中能够看到哪些菜单项菜单权限指的就是后台系统中的左侧的菜...
    99+
    2023-05-14
    前端 Vue.js Vuex
  • vuedirective全局自定义指令实现按钮级别权限控制的操作方法
    目录概念全局自定义指令局部自定义指令钩子函数全局自定义指令项目应用在日常项目中,通常会需要根据后台接口返回的数据,来判断当前用户的按钮操作权限。对于当前登录用户来说,只有在当前按钮有...
    99+
    2023-02-06
    vue directive按钮级别权限控制 vue directive全局自定义指令
  • Spring的事务控制实现方法
    Spring的事务控制实现,供大家参考,具体内容如下 提示:这里使用的是xml的方式配置事务的 前言 例:当银行转账的时候,如果转账和收款的一方出现问题,那么这次的转账则不成功,此处...
    99+
    2022-11-13
  • Android 控件(button)对齐方法实现详解
    1,android:orientation 布局方向。horizontal是让所有的子元素按水平方向从左到右排列, vertical是让所有的子元素按竖直方向从上到下排列。 2...
    99+
    2022-06-06
    button 方法 Android
  • Spring Security实现基于RBAC的权限表达式动态访问控制的操作方法
    目录资源权限表达式Spring Security中的实现MethodSecurityExpressionHandler思路以及实现配置和使用昨天有个粉丝加了我,问我如何实现类似shi...
    99+
    2022-11-13
  • Java程序的逻辑控制和方法详解
    一、顺序结构 从上往下执行,非常简单,不做过多赘述。 二、分支结构 1.if语句 与c语言不同的是,java的if(布尔表达式)必须是布尔表达式 eg:判断某一年是否是闰年 p...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作