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

Vue 路由 路由守卫

路由守卫
正如其名, vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。简单来说,就是在路由跳转
时候的一些钩子,当从一个页面跳转到另一个页面时,可以在跳转前、中、后做一些事情。
当你打开一个页面的前后需要去干什么。
每个守卫方法接收参数:
  • to:即将要进入的目标,是一个路由对象
  • from:当前导航正要离开的路由,也是一个路由对象
  • next:可选,是一个方法,直接进入下一个路由
你可以使用 router.beforeEach 注册一个全局前置守卫,当一个导航触发时,就会异步执行这个回调函数。

to是指从哪个页面来,from代表从根目录来。to:从哪来  from:到哪去    

//2.创建路由实例并传递上面路由对象routesconst router = createRouter({
//路由的一种前端展现方式,通常使用这个就行了history: createWebHistory(),routes}
)//定义前置路由守卫。进入某个页面之前需要干什么
router.beforeEach((to,from,next) => {console.log(to)console.log(from)
})

router.beforeEach((to, from, next) => {
//如果用户访问登录页,直接放行if(to.path == '/login') {return next()
}const token = '' //模拟token,正常是从本地cookie或localstorage中获取if (token) {return next() //如果有token,则正常跳转访问
} else {return next('/login') //如果没有token,跳转到登录页
}
})

一.全局守卫

1.全局前置守卫

语法:

 router.beforeEach((to,from,next)=>{})

参数说明:
to:进入到哪个路由去
from:从哪个路由离开
next:函数,决定是否展示你要看到的路由页面。

示例:
main.js 中设置全局守卫

  • 在main.js中,有一个路由实例化对象router。在main.js中设置守卫已是全局守卫。
  • 如下,判断to.path当前将要进入的路径是否为登录或注册,如果是就执行next(),展示当前界面。如果不是,就弹出alert,然后移至登录界面。
  • 这样就可实现,用户在未登录状态下,展示的一直是登录界面。

router.beforeEach((to,from,next)=>{if(to.path == '/login' || to.path == '/register'){next();}else{alert('您还没有登录,请先登录');next('/login');}})
http://www.lryc.cn/news/107894.html

相关文章:

  • 基于springboot的课程作业管理系统【附开题|ppt|万字文档(LW)和搭建文档】
  • 关于个人微信API接口的开发
  • 华为PMS API client token auth failed
  • 【Java面试丨消息中间件】Kafka
  • 7.数组(一维数组、二维数组、C99中的变长数组、二分查找法)
  • ubuntu服务器配置ftp服务
  • IDA+Frida分析CTF样本和Frid源码和objection模块
  • ConCurrentHashMap常见面试题
  • mysql数据备份并重置
  • I- yh的线段(2023河南萌新联赛第(四)场:河南大学)
  • python与深度学习(十四):CNN和IKUN模型二
  • chrome扩展在popup、background、content之间通信解决传输文件问题
  • Oracle获取创建对象的DDL脚本
  • 《算法竞赛·快冲300题》每日一题:“01树”
  • Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
  • 探索嵌入式系统:从入门到实践
  • 网络安全知识点整理(作业2)
  • idea数据库快速上手-库操作与表结构和数据操作
  • 当“国潮”遇见“双语” 以传承之心种下一颗文化的种子
  • 计划管理与项目管理:有何区别?
  • 个人信息保护合规审计如何做?
  • HTTP杂谈之Referer和Origin请求头再探
  • 数学建模-爬虫入门
  • HSRM各表
  • Ansible自动化运维工具 —— Playbook 剧本
  • 第二章:多态
  • C++面向对象设计基础
  • Linux定时运行sh脚本,如果sh文件已经在运行,则忽略本次运行
  • SpringBoot项目中的web安全防护
  • stm32和python串口数据收发