路由守卫:前置守卫和后置守卫

聚沙成塔·每天进步一点点

本文内容

  • ⭐ 专栏简介
  • 路由守卫:前置守卫和后置守卫
    • 1. 前置守卫
      • 使用方式
        • 全局前置守卫
        • 局部前置守卫
    • 2. 后置守卫
      • 使用方式
        • 全局后置守卫
    • 案例:路由跳转前后权限验证
    • 总结
  • ⭐ 写在最后


⭐ 专栏简介

Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每篇文章都致力于提供清晰、深入的参考资料,让你能够更轻松、更自信地理解和掌握 Vue.js 的核心概念和技术。订阅这个专栏,让我们一同踏上更深入的 Vue学习之旅!为你的前端技能树添砖加瓦!

在这里插入图片描述


路由守卫:前置守卫和后置守卫

Vue Router 提供了路由守卫(Navigation Guards),用于在路由跳转前后执行一些逻辑操作,如权限验证、页面加载提示等。路由守卫分为前置守卫和后置守卫,它们分别在路由跳转前和路由跳转后执行。

1. 前置守卫

前置守卫用于在路由跳转前执行一些操作,例如进行权限验证或者页面加载提示。前置守卫可以阻止路由跳转,或者在跳转前执行一些异步操作。

使用方式

全局前置守卫

在 Vue Router 中,可以使用 router.beforeEach 注册全局前置守卫。

router.beforeEach((to, from, next) => {// 在路由跳转前执行的操作// 可以进行权限验证、页面加载提示等// 示例:权限验证if (!isAuthenticated()) {next('/login'); // 跳转到登录页} else {next(); // 继续路由跳转}
});
局部前置守卫

也可以在路由配置中使用 beforeEnter 注册局部前置守卫。

const routes = [{path: '/home',component: Home,beforeEnter: (to, from, next) => {// 在路由跳转前执行的操作// 可以进行权限验证、页面加载提示等// 示例:页面加载提示showLoadingIndicator();next(); // 继续路由跳转}}
];

2. 后置守卫

后置守卫用于在路由跳转后执行一些操作,例如页面的统计和日志记录等。后置守卫无法阻止路由跳转,只能在跳转后执行一些逻辑操作。

使用方式

全局后置守卫

在 Vue Router 中,可以使用 router.afterEach 注册全局后置守卫。

router.afterEach((to, from) => {// 在路由跳转后执行的操作// 可以进行页面的统计、日志记录等// 示例:页面统计trackPageView(to.path);
});

后置守卫没有局部注册的方式,只能注册全局后置守卫。

案例:路由跳转前后权限验证

// main.jsimport Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';Vue.use(VueRouter);const router = new VueRouter({routes: [// 路由配置]
});// 全局前置守卫:权限验证
router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !isAuthenticated()) {next('/login');} else {next();}
});new Vue({el: '#app',router,render: h => h(App)
});

总结

  • 前置守卫: 在路由跳转前执行,用于权限验证、页面加载提示等操作。
  • 后置守卫: 在路由跳转后执行,用于页面统计、日志记录等操作。
  • 使用路由守卫可以增强应用的控制和用户体验,使得路由跳转的过程更加灵活和可控。

⭐ 写在最后

欢迎来到《Vue技能树专栏》!本专栏旨在帮助您全面深入地掌握Vue.js,一款现代、灵活且强大的JavaScript框架。无论您是初学者还是有一定经验的开发者,这里都将为您提供详细的指导、实用的技巧以及深入的理解,助您在Vue.js世界中游刃有余。如果文中出现有瑕疵的地方各位可以通过主页的左侧联系我指正,我们一起进步,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/503525.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js中的数据加密和安全传输

在当今日益数字化的世界中,数据安全一直是一个备受关注的话题。Node.js作为一种流行的后端开发技术,其在数据加密和安全传输方面的应用也备受关注。本篇博客将深入探讨Node.js中的数据加密和安全传输相关内容,并为读者提供一些示例代码&#…

1209. 带分数 刷题笔记

思路 暴力匹配 读入目标数 n 看n是否与ab/c相等 因为c里面的除法是整除 我们将 nab/c 转换为 c*na*cb 那么如何获得a,b,c 依题意 a,b,c三个数由1-9九个数字组成 且每个数字只能出现一次 由此 我们可以搜出123456789的全部排列方式…

【YOLO v5 v7 v8 小目标改进】ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统动态卷积

ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统的动态卷积 提出背景传统动态卷积全维动态卷积效果 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 论文:https://openreview.net/pdf?idDmpCfq6Mg…

数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言第二、三章 关系数据库和标准语言SQL2.1 关系2…

Vue+SpringBoot打造个人保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 保险档案模块2.3 保险订单模块2.4 保险理赔模块 三、系统展示四、核心代码4.1 查询保险产品4.2 新增保险预定4.3 订单支付4.4 新增理赔单4.5 查询保险理赔 五、免责说明 一、摘要 1.1 项目介绍 基于J…

Spring MVC源码中设计模式——适配器模式

适配器模式介绍 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 应用场景: 1、系统需要使用现有的类,而此类的接口不符合系统的需要…

leedcode刷题--day7(字符串)

23 文章讲解 力扣地址 C class Solution { public:void reverseString(vector<char>& s) {int left 0;int right s.size() - 1; // right 应该初始化为 s.size() - 1while (left < right) {swap(s[left], s[right]); // 直接交换 s[left] 和 s[right] 的值lef…

备战蓝桥杯---状态压缩DP基础1之棋盘问题

它只是一种手段&#xff0c;一种直观而高效地表示复杂状态的手段。 我们先来看一道比较基础的&#xff1a; 直接DFS是肯定不行&#xff0c;我们发现对某一行&#xff0c;只要它前面放的位置都一样&#xff0c;那么后面的结果也一样。 因此我们考虑用DP&#xff0c;并且只有0/…

操作系统x面试|进程与线程

1. 线程进程的区别 进程可以称为是资源分配的最小单元&#xff0c;而线程可以称为是处理器分配的最小单元。 资源包括内存空间。同时进程是一段代码的执行过程&#xff0c;这段代码需要多少的内存在代码确定时已经确定下来了。 处理器就是执行单元&#xff0c;一个进程可以拆解…

Vue3速成

文章目录 day 11. 创建vue3工程3. 响应式数据4. 计算属性 day 25. watch 监视6. watchEffect7. 标签的ref属性8. 回顾TS中的接口_泛型_自定义类型 day 1 1. 创建vue3工程 相关代码如下&#xff1a; ## 创建vue工程 npm create vuelastest## 安装node_modules npm install //…

分类问题经典算法 | 二分类问题 | Logistic回归:梯度下降

目录 一. 损失函数1. 交叉熵损失函数2. 梯度下降 一. 损失函数 Logistic回归算法公式推导篇中&#xff0c;我们通过对似然函数求对数&#xff0c;得到 l ( θ ) l(\theta ) l(θ)&#xff1a; l ( θ ) l n [ L ( θ ) ] ∑ i 1 M { y ( i ) l n [ h θ ( x ( i ) ) ] ( …

laravel ApiResponse接口统一响应封装

一&#xff0c;新增接口返回码配置文件 在config中新增配置文件apicode.php <?phpreturn [ apicodes>[/*** Message("OK")* 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上*/HTTP_OK > 200,/*** Message(&qu…