首页 > 其他分享 >Vue2(路由守卫,路由器两种工作模式)

Vue2(路由守卫,路由器两种工作模式)

时间:2024-11-06 23:44:18浏览次数:6  
标签:title next 守卫 meta Vue2 组件 路由 路由器

一、路由守卫

  1. 作用:对路由进行权限控制
  2. 分类:全局守卫、独享守卫、组件内守卫
1. 全局守卫
全局前置路由守卫
  1. 每次路由切换之前被调用,初始化时被调用
  2. beforeEach接收三个参数:to, from, next
  3. 路由元信息meta,用于存放一些自定义属性
// src/router/index.js
...
routers:[
    {
        name: ,
        path: ,
        component;,
        meta:{
        isAuth:true,//意味着这个组件需要鉴权
    }
    }
]

router.beforeEach((to,from,next)=>{
    console.log('beforeEach',to,from)
    if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
        if(localStorage.getItem('school') === 'atguigu'){ //权限控制的具体规则
            next() //放行
        }else{
            alert('暂无权限查看')
        }
    }else{
        next() //放行
    }
})
全局后置路由守卫
  1. 每次路由切换之后被调用,初始化时被调用
  2. afterEach接收两个参数:to, from
  3. 适用场景:不同模块显示不同的网页title,成功切换模块后,再修改网页title
router.afterEach((to,from)=>{
	console.log('afterEach',to,from)
	if(to.meta.title){ 
		document.title = to.meta.title //修改网页的title
	}else{
		document.title = 'vue_test'
	}
})
2. 独享守卫
  1. 某一个路由单独享用的守卫
  2. beforeEnter接收三个参数:to, from, next
  3. 没有afterEnter,可以配合全局后置守卫使用
beforeEnter(to,from,next){
	console.log('beforeEnter',to,from)
	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
		if(localStorage.getItem('school') === 'atguigu'){
			next()
		}else{
			alert('暂无权限查看')
			// next({name:'guanyu'})
		}
	}else{
		next()
	}
}
3. 组件内守卫
  1. 将守卫写在组件内,而不是路由器index.js里
  2. beforeRouteEnter(通过路由规则进入)接收三个参数:to, from, next,通过路由规则,进入该组件时被调用,相当于前置守卫,to为当前组件
  3. beforeRouteLeave(通过路由规则离开)接收三个参数:to, from, next,通过路由规则,离开该组件时被调用,from为当前组件

在这里插入图片描述

beforeRouteEnter (to, from, next) {},
beforeRouteLeave (to, from, next) {}

二、路由器的两种工作模式

1. hash模式
  1. 地址栏的# 以及后面的内容
  2. hash值不会包含在 HTTP 请求中,即:hash值不会带给服务器。
  3. hash模式:
    • 地址中永远带着#号,不美观 。
    • 若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。
    • 兼容性较好。
  4. 路由器默认时hash模式
2. history模式

在创建路由规则的地方更改mode属性

const router = new VueRouter({
    mode:'history',
    routers:[...]
})
  1. 地址干净,美观 。
  2. 兼容性和hash模式相比略差。
  3. 应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。

标签:title,next,守卫,meta,Vue2,组件,路由,路由器
From: https://blog.csdn.net/weixin_53453884/article/details/143492741

相关文章

  • 静态路由规则配置
    静态路由配置本质上通过配置虚拟机实现不同网段之间进行通信第一步:准备3台虚拟机第一台网卡配置NAT模式;第二台配置两个网卡,分别为配置NAT模式+LAN区段;第三台配置LAN区段第二步:配置网卡相关信息先查看宿主机(物理机)VMnet8网卡的IP和子网掩码配置网卡相关信息【具体的......
  • Vue项目中动态路由与权限控制:router.beforeEach的使用及无token重定向登录页
    在现代前端项目中,权限控制是一个非常重要的环节。VueRouter作为Vue官方的路由管理器,为我们提供了强大的路由管理功能。在本文中,我们将探讨如何在Vue项目中使用router.beforeEach钩子函数来实现动态路由权限控制,并在用户未登录时自动重定向到登录页。步骤一:登录并获取Token首......
  • VLAN路由-单臂路由
            这章我们来讲讲(VLAN路由-单臂路由)如何配置PS:因为不同VLAN之间的主机是无法实现二层通信的,所以必须通过三层路由才能将报文从一个VLAN转发到另外一个VLAN。解决VLAN间通信问题的第二种方法是:在交换机和路由器之间仅使用一条物理链路连接。在交换机上,把连接......
  • 笔记--(网络4)、路由
    路由条目包含以下信息目的网络:目的网段的网络号掩码:目的网段的掩码出接口:数据包从本路由器发出的接口下一跳:到达目的网段的下一跳的设备地址路由表路由器通过各种方式发现路由路由器选择最优的路由条目放入路由表中路由表指导设备对IP报文的转发路由器通过对路......
  • vue3 如何使用router路由表 创建 Menu 导航菜单
    vue3如何使用router路由表创建Menu导航菜单1.vue3如何使用router路由表创建Menu导航菜单1.1.安装VueRouter1.2.设置路由1.3.在主应用中使用路由1.4.创建导航菜单组件1.5.在布局中使用导航菜单 1.vue3如何使用router路由表创建M......
  • 3.fastapi的路由分发include_router
    1.main文件中添加prefix指定参数,urls中不添加路由前缀的效果2.main文件中添加prefix指定参数,urls中添加路由前缀的效果3.购物中心接口运行结果_get请求_food4.购物中心接口运行结果_get请求_bed5.用户中心接口运行结果_post请求_login6.用户中心接口运行结果_post请求_reg......
  • HarmonyOS 开发实践——基于自定义注解和代码生成实现路由框架
    ......
  • 在路由引入时应用路由策略示例
    组网需求RouterB与RouterA之间通过OSPF协议交换路由信息,与RouterC之间通过IS-IS协议交换路由信息。要求在RouterB上将IS-IS网络中路由引入到OSPF网络后,OSPF网络中路由172.16.1.0/24的选路优先级较低;路由172.16.2.0/24具有标识,方便以后运用路由策略。配置思路采用如下的......
  • 【Vue3】Vue3相比Vue2有哪些新特性?全面解析与应用指南
    ......
  • 群晖虚拟openwrt做旁路由
     群晖NAS安装openWRT旁路由保姆级教程2023-12-0522:24:09 121点赞 1098收藏 77评论之前写过一篇用群晖做ikuai旁路由的教程,ikuai用来做网络行为管控相当不错,但其他服务和应用丰富度不如openWRT,比如有时候需要开全局加速什么的;家里有一台稳定的路由器,但基本没什么功......