当前位置: 首页 > news >正文

vue三种路由守卫详解

在 Vue 中,可以通过路由守卫来实现路由鉴权。Vue 提供了三种路由守卫:全局前置守卫、全局解析守卫和组件内的守卫
在这里插入图片描述

  1. 全局前置守卫
    通过 router.beforeEach() 方法实现,可以在路由跳转之前进行权限判断。在这个守卫中,可以根据用户的登录状态、角色等信息来判断用户是否有权限访问该路由。如果没有权限,则可以跳转到登录页面或者其他提示页面。
  2. 全局解析守卫
    通过 router.beforeResolve() 方法实现,可以在路由解析之前进行权限判断。这个守卫可以用于处理异步路由加载的情况,确保在加载路由之前进行权限判断。
  3. 组件内的守卫
    通过 beforeRouteEnter 、 beforeRouteUpdate 和 beforeRouteLeave 这三个钩子函数实现。这些守卫直接在组件内部定义,并且会在组件的路由导航过程中触发。可以用于执行一些与组件相关的逻辑,例如加载组件的数据、检查组件的状态等。

全局前置守卫代码示例

以下是一个示例代码,展示了如何使用全局前置守卫来限制未登录用户的访问:

const router = new VueRouter({
routes: [
{
path: ‘/’,
component: HomeComponent,
},
{
path: ‘/login’,
component: LoginComponent,
},
],
});

router.beforeEach((to, from, next) => {
// 检查用户是否已登录
if (!isLoggedIn) {
next(’/login’);
} else {
next();
}
});

在这个示例中,定义了一个全局前置守卫,使用 router.beforeEach() 方法来检查用户是否已登录。如果用户未登录,则导航到登录页面,否则允许继续导航。

全局解析守卫的示例代码

这个示例展示了如何使用 router.beforeResolve() 方法进行权限判断:

router.beforeResolve((to, from, next) => {
// 获取要进入的路由组件
const component = to.matched[0].components.default;

// 进行权限检查
if (hasPermission(component)) {
next();
} else {
// 没有权限,跳转到错误页面或执行其他操作
next(’/error’);
}
});

在这个示例中,使用 router.beforeResolve() 方法定义了全局解析守卫。通过获取要进入的路由组件,并进行权限检查来确定用户是否有权访问该组件。如果有相应权限,就继续导航;否则,跳转到错误页面或执行其他操作。

请注意,全局解析守卫在路由解析完成后触发,也就是在组件被加载之前。这意味着你可以在守卫中进行更复杂的权限检查,例如检查组件的特定属性或与服务器进行异步验证。

三种组件内守卫代码示例

在 Vue.js 中,组件内守卫有三个: beforeRouteEnter 、 beforeRouteUpdate 和 beforeRouteLeave 。以下是一个示例代码,展示了如何使用这三种组件内守卫:

export default {
name: ‘About’,
// beforeRouteEnter 是进入守卫,通过路由规则,进入该组件时被调用
beforeRouteEnter(to, from, next) {
console.log(‘About–beforeRouteEnter’, to, from)
if (to.meta.isAuth) {
if (localStorage.getItem(‘school’) === ‘atguigu’) {
next()
} else {
alert(‘学校名不对,无权限查看!’)
}
} else {
next()
}
},
// beforeRouteLeave 是离开守卫,通过路由规则,离开该组件时被调用
beforeRouteLeave(to, from, next) {
console.log(‘About–beforeRouteLeave’, to, from)
next()
},
// beforeRouteUpdate 是更新守卫,组件被复用(例如从缓存中恢复)时被调用
beforeRouteUpdate(to, from, next) {
console.log(‘About–beforeRouteUpdate’, to, from)
next()
}
}

在上述示例中, beforeRouteEnter 守卫会在进入 About 组件时被调用。如果路由规则中设置了 isAuth 元数据并且本地存储中 school 的值为 atguigu ,则允许进入该组件;否则会弹出一个警告框。 beforeRouteLeave 守卫会在离开 About 组件时被调用,它只是简单地继续执行下一个路由。 beforeRouteUpdate 守卫会在组件被复用(例如从缓存中恢复)时被调用,它也只是简单地继续执行下一个路由。

请注意,上述示例代码中的 isAuth 元数据和 localStorage.getItem(‘school’) 是自定义的,你可以根据实际需求进行相应的修改。

相关文章:

vue三种路由守卫详解

在 Vue 中,可以通过路由守卫来实现路由鉴权。Vue 提供了三种路由守卫:全局前置守卫、全局解析守卫和组件内的守卫。 全局前置守卫 通过 router.beforeEach() 方法实现,可以在路由跳转之前进行权限判断。在这个守卫中,可以根据用…...

【Linux】线程概念和线程控制

线程概念 一、理解线程1. Linux中的线程2. 重新定义线程和进程3. 进程地址空间之页表4. 线程和进程切换5. 线程的优点6. 线程的缺点7. 线程异常8. 线程用途9. 线程和进程 二、线程控制1. pthread 线程库(1)pthread_create()(2)pth…...

maven创建webapp+Freemarker组件的实现

下载安装配置maven Maven官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供Maven最新版正式版官方版绿色版下载,Maven安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com/s/9QRqVv-TcUY.html链接为3.6.2-3.6.3的版本 下载解…...

Stable Diffusion 模型下载:Samaritan 3d Cartoon SDXL(撒玛利亚人 3d 卡通 SDXL)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

Oracle系列之十:Oracle正则表达式

Oracle正则表达式 1. 基本语法2. POSIX字符类3. 正则表达式函数4. 常用正则表达式 正则表达式 (Regular expression) 是一种强大的文本处理工具,Oracle数据库自9i版本开始引入了正则表达式支持,可帮助开发者快速而准确地匹配、查找和替换字符串&#xff…...

php基础学习之运算符(重点在连接符和错误抑制符)

运算符总结 在各种编程语言中&#xff0c;常用的运算符号有这三大类&#xff1a; 算术运算符&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%位运算符&#xff1a;&&#xff0c;|&#xff0c;^&#xff0c;<<&#xff0c;>>赋值运算符&…...

【CC工具箱1.2.0】更新_免费无套路,60+个工具,原码放出

CC工具箱目前已经更新到1.2.0版本&#xff0c;完全免费无套路。 适用版本ArcGIS Pro 3.0及以上。 欢迎大家使用&#xff0c;反馈bug&#xff0c;以及提出需求和意见&#xff0c;时间和能力允许的话我会尽量满足要求。 如有关于工具的使用问题和需求建议&#xff0c;可以加下…...

Java 将TXT文本文件转换为PDF文件

与TXT文本文件&#xff0c;PDF文件更加专业也更适合传输&#xff0c;常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求&#xff0c;可以查看本文中介绍的免费实现方法。 免费Java PDF库 本文介绍的方法需要用到Free Spire.PDF for Java…...

Sketch 99.1 for macOS

Sketch 99.1 for macOS 概述 这个程序是对矢量绘图的创新性和焕然一新的看法。它特意采用了极简主义的设计&#xff0c;基于一个大小无限、图层自由的绘图空间&#xff0c;没有调色板、面板、菜单、窗口和控件。 此外&#xff0c;它提供了强大的矢量绘图和文本工具&#xff0c;…...

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…...

Prompt Tuning:深度解读一种新的微调范式

阅读该博客&#xff0c;您将系统地掌握如下知识点&#xff1a; 什么是预训练语言模型&#xff1f; 什么是prompt&#xff1f;为什么要引入prompt&#xff1f;相比传统fine-tuning有什么优势&#xff1f; 自20年底开始&#xff0c;prompt的发展历程&#xff0c;哪些经典的代表…...

Unity3d Shader篇(五)— Phong片元高光反射着色器

文章目录 前言一、Phong片元高光反射着色器是什么&#xff1f;1. Phong片元高光反射着色器的工作原理2. Phong片元高光反射着色器的优缺点优点缺点 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三、效果四、总…...

sql求解连续两个以上的空座位

Q&#xff1a;查找电影院所有连续可用的座位。 返回按 seat_id 升序排序 的结果表。 测试用例的生成使得两个以上的座位连续可用。 结果表格式如下所示。 A:我们首先找出所有的空座位&#xff1a;1&#xff0c;3&#xff0c;4&#xff0c;5 按照seat_id排序&#xff08;上面已…...

【链表】-Lc146-实现LRU(双向循环链表)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.双向循环链表3.代码 写在后面 一、场景描述 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (…...

MYSQL学习笔记:MYSQL存储引擎

MYSQL学习笔记&#xff1a;MYSQL存储引擎 MYSQL是插件式的存储引擎 存储引擎影响数据的存储方式 存储引擎是用来干什么的&#xff0c;innodb和myisam的主要区别–数据存储方式----索引 mysql> show engines; ----------------------------------------------------------…...

Bitcoin Bridge:治愈还是诅咒?

1. 引言 主要参考&#xff1a; Bitcoin Bridges: Cure or Curse? 2. 为何需关注Bitcoin bridge&#xff1f; 当前的Bitcoin bridge&#xff0c;其所谓bridge&#xff0c;实际是deposit&#xff1a; 在其它链上的BTC情况为&#xff1a; 尽管当前约有43.7万枚BTC在其它链上…...

Netty应用(七) 之 Handler Netty服务端编程总结

目录 15.Handler 15.1 handler的分类 15.1.1 按照方向划分 15.1.2 handler的结构 15.2 输入方向ChannelInboundHandlerAdapter 15.2.1 输出方向Handler的顺序 15.2.2 多个输入方向Handler之间的数据传递 15.2.2.1 handler消失了 15.2.2.2 手动编写netty提供的new Strin…...

LeetCode、1268. 搜索推荐系统【中等,前缀树+优先队列、排序+前缀匹配】

文章目录 前言LeetCode、1268. 搜索推荐系统【中等&#xff0c;前缀树优先队列、排序前缀匹配】题目类型及分类思路API调用&#xff08;排序前缀匹配&#xff09;前缀树优先队列 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创…...

计算机视觉基础:矩阵运算

矩阵及其表示方式 一个矩阵是由行(row)和列(column)组成的一个矩形数组&#xff0c;通常包含数字。我们可以用大写字母&#xff08;如 A、B&#xff09;来表示一个矩阵。例如&#xff0c;矩阵 A 可能看起来像这样&#xff1a; A [ a11 a12 a13 ][ a21 a22 a23 ][ a31 a32 a3…...

Gateway中Spring Security6统一处理CORS

文章目录 一、起因二、解决方法 一、起因 使用了gateway微服务作为整体的网关&#xff0c;并且整合了Spring Security6&#xff1b;还有一个system微服务&#xff0c;作为被请求的资源&#xff0c;当浏览器向gateway发送请求&#xff0c;请求system资源时&#xff0c;遇到CORS…...

Android屏幕共享技术方案如何实现跨设备实时传输?AndroidScreenShare项目深度解析

Android屏幕共享技术方案如何实现跨设备实时传输&#xff1f;AndroidScreenShare项目深度解析 【免费下载链接】AndroidScreenShare Android 屏幕共享, 共享你的屏幕和音频到另一台手机 Share your screen and voice to other phone 项目地址: https://gitcode.com/gh_mirro…...

3个关键步骤:在macOS上制作Windows启动盘的完整指南

3个关键步骤&#xff1a;在macOS上制作Windows启动盘的完整指南 【免费下载链接】windiskwriter &#x1f5a5; Windows Bootable USB creator for macOS. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f47e; UEFI & Legacy Sup…...

069、PCIE属性字段:缓存、顺序与安全

069、PCIE属性字段:缓存、顺序与安全 从一次DMA数据损坏说起 上个月调试一块自研的PCIE采集卡,遇到了一个诡异的问题:主机通过DMA从设备读取图像数据,大部分帧正常,但偶尔会出现局部数据错位,像是缓存没刷干净。用逻辑分析仪抓链路层报文,发现TLP(事务层包)本身完好,…...

实战避坑:C语言结构体定义时,那个‘名字’到底能不能省?

C语言结构体命名策略&#xff1a;从语法细节到工程实践的深度思考 在嵌入式开发中&#xff0c;我遇到过这样一个场景&#xff1a;团队为了快速实现通信协议解析&#xff0c;大量使用了匿名结构体。初期开发效率确实很高&#xff0c;但三个月后需求变更时&#xff0c;没人能说清…...

打卡2026阿里云峰会

打卡2026阿里云峰会。 这次大会不仅在美丽的西湖边上&#xff0c; 还有几个新朋友要来。。...

B站视频下载终极指南:如何一键获取无水印高清视频

B站视频下载终极指南&#xff1a;如何一键获取无水印高清视频 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload 你是否曾为下载B站视频而烦恼&#xff1f;想要保存喜欢的视频却找不到合适的工具&#xff1f;B…...

DeltaV私有协议逆向分析与流量识别实战

1. 这不是普通工控协议——DeltaV私有协议为何让安全团队彻夜难眠Emerson DeltaV&#xff0c;这个名字在石化、制药、精细化工等连续流程工业现场几乎等同于“控制系统心脏”。但真正让一线自动化工程师和网络安全人员同时皱眉的&#xff0c;从来不是它那套成熟稳定的DCS架构&a…...

如何高效使用智能自动化工具:免费开源解决方案完全指南

如何高效使用智能自动化工具&#xff1a;免费开源解决方案完全指南 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 想象一下&#xff0c;每天重复点击鼠标、填写表单、复制粘贴数据的工作让你感…...

集装箱箱号与ISO代码区域检测数据集VOC+YOLO格式887张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;887标注数量(xml文件个数)&#xff1a;887标注数量(txt文件个数)&#xff1a;887标注类别数&…...

[特殊字符]️ 信创服务器深度解析:从CPU到操作系统,一文搞懂国产化替代全栈方案

标签&#xff1a;信创 国产化 服务器 CPU选型 海光 鲲鹏 &#x1f3af; 开篇导读 你是否在国产化替代项目中不知道选哪款CPU&#xff1f;网上搜到的信创资料要么只讲政策不讲技术&#xff0c;要么直接给产品列表却不解释选型逻辑。本文将从信创服务器的四层架构&#xff08;硬…...