2022-11-15 vue笔记-路由vue-router(四) 路由守卫(又称路由拦截,导航守卫)的定义以及示例

news/2025/3/29 8:15:57/

文章目录

        • 0.路由的概念
        • 1.路由守卫的定义
          • 定义
          • 官方解释
          • 路由守卫的分类
          • 钩子函数
        • 2.路由守卫的使用场景
        • 3.语法:`router.beforeEach((to,from,next) => {}`
        • 4.路由守卫示例:(接前例)为点击Center路由的操作判断是否已登录
          • router.index.js
          • views/Login.vue
          • 结果

0.路由的概念

路由其实是一种映射关系。

  • 生活中的路由:设备和ip的映射关系;
  • node.js路由:接口和服务的映射关系;
  • (前端)Vue中的路由:路径和组件的映射关系。

1.路由守卫的定义

定义

路由守卫又称导航守卫,指是路由跳转前、跳转中、跳转后过程中的一些钩子函数

官方解释

vue-router提供的导航守卫,要通过跳转或取消的方式来守卫导航

路由守卫的分类

全局路由、组件内路由,路由独享

钩子函数
1.全局路由的钩子函数有:beforeEach、beforeResolve、afterEach(参数中没有next)
2.组件内路由的钩子函数有:beforeRouterEnter、beforeRouteUpdate、beforeRouteLeave
3.路由独享的钩子函数有:beforeEnter

2.路由守卫的使用场景

给路由添加一个权限判断:路由跳转之前,会触发一个函数
场景:用户在登录的状态下就能去到某页面,但是未登录则给你弹出一个未登录的提示。

3.语法:router.beforeEach((to,from,next) => {}

let isLogin = false; //未登录
router.beforeEach((to,from,next) => {//路由跳转“之前”先执行这里,决定是否跳转if (to.path === '/Login' && isLogin === false) {alert("请登录”)next(false) //阻止路由跳转}else {next() //正常放行}
});

参数

  • to:要跳转到的路由目标
  • from:从哪里跳转的路由 (路由对象信息)来源
  • next:函数体 必须要next()才会让路由正常地跳转和切换

全局路由在真正跳转之前,会执行一次beforeEach函数,
next调用则跳转,也可以强制修改要跳转的路由。

4.路由守卫示例:(接前例)为点击Center路由的操作判断是否已登录

router.index.js
import vueRouter from "vue-router"
// 引入路由
...
import Login from "@/views/Login"// 配置路由
// 创建路由对象router
const router = new vueRouter({routes: [...{path: "/Login",component: Login}],
});
//此处一般用token验证
const checkUser = {isLogin() {return false;}
};
//登陆守卫
router.beforeEach((to, from, next) => {console.log(to.path);//输出用户的点击路径if (to.path == "/Center") {//点击Center:登录状态检查console.log("正在检查登录状态...");;if (checkUser.isLogin()) { //是否已登录console.log("您已登陆!");next(); //登录:放行} else {console.log("您未登陆!正在跳转到登录页面...");next("/Login"); //未登录:跳转至Login页}} else {//点击别的页面:直接放行next();}
});
// 导出路由
export default router;
views/Login.vue
<template><div>用户名:<input type="text">密码:<input type="password"></div>
</template>
结果

用户点击一次:个人中心
在这里插入图片描述
因没有登录而自动转到Login页面,
若已登录

const checkUser = {isLogin() {//return false;return true;}
};

则放行进入Center.页面
在这里插入图片描述


http://www.ppmy.cn/news/506402.html

相关文章

F - Hammer 2

F - Hammer 2&#xff08;ABC273f&#xff09; 题意 高桥是数轴的起源。高桥想在坐标达到目标X. 此外&#xff0c;还有n墙壁和n锤在数轴上。 在坐标是 Y1…Yn 是类型的墙1…n分别。 最初&#xff0c;高桥无法翻墙。 在坐标Z1…Zn ​​​ 是类型的锤子1 、2 、…,n,分别。…

hdf4

#include "mfhdf.h" #pragma comment (lib, "mfhdf.lib") // 打开hdf4文件 // > 0 成功 SDstart // 关闭hdf4文件 SDend // 查询相关属性 // > -1 成功,返回索引 SDfindattr // 读取属性定义 // SUCCEED 成功 SDattrinfo // 读取…

hFE和hfe有什么不同?

Mako&#xff1a;我们已经学习了有关晶体管的工作原理,晶体管的放大作用就是由小的 输入得到大的输出吧? Doc:这种说法还稍微有点欠缺,应 该说成用小的输入控制大的输出更为合适。如果只关注晶体管的电流,就 可以这样考虑,用极小的基极电流IB控制 大的集电极电流I。通常,基极电…

FH

主要是接收网页的请求&#xff1a; com.fiberhome.platform.controller HTML&#xff1a;超文本标记语言是一种用于创建网页的标准标记语言。可以使用HTML来建立自己的WEB站点&#xff0c;HTML运行在浏览器上&#xff0c;由浏览器来解析。 &#xff1a;声明为HTML5文档 <…

FHS

FHS文件系统层级结构标准 文件系统&#xff1a;操作系统用于明确存储设备或分区上的文件的方法和数据结构&#xff1b; (磁盘上组织文件的方法 在操作系统中负责管理和存储文件信息的软件机构) linux层次化文件结构&#xff0c;倒树状结构文件结构 FHS filesystem hierarchy s…

Android四大组件之ContentProvider

1.ContentProvider定义 这里通过一个实际的例子来说明ContentProvider&#xff08;内容提供者&#xff09;是什么&#xff0c;作用是什么 短信应用要访问通讯录应用中的数据&#xff0c;是不能直接访问的&#xff0c;应用通讯录的中的数据是属于通讯录app数据库中的数据&…

EventBus

EventBus 文章目录 EventBus1.EventBus的作用2.关于EventBus的概述3.EventBus的使用方法4.EventBus的黏性事件5.EventBus的源码EventBus的构造方法getDefault()源码EventBus()源码 订阅者注册register()源码findSubscriberMethods()源码findUsingInfo()源码findUsingReflection…

在成都

今年是在成都的11年了,这期间我经历了传统生活与成都新媒体的融合发展,也见证了成都媒体的崛起。我从杂志编辑转行到了手机报编辑,再到自媒体运营,这11年里,我赶在青春最前面&#xff0c;各种沧桑。