5分钟学会vue中的路由守卫

在项目开发中每一次页面的跳转或者刷新,都需要判断用户是否已经登录。后端会进行判断的,前端最好也进行一次判断。

vue-router提供了导航钩子:全局前置导航钩子 beforeEach和全局后置导航钩子 afterEach,他们会在路由即将改变前和改变后进行触发。所以判断用户是否登录需要在beforeEach导航钩子中进行判断。

导航钩子有3个参数:
1、to:即将要进入的目标路由对象;
2、from:当前导航即将要离开的路由对象;
3、next :调用该方法后,才能进入下一个钩子函数(afterEach)。
  next()//直接进to 所指路由
  next(false) //中断当前路由
  next(‘route’) //跳转指定路由
  next(‘error’) //跳转错误路由

beforeEach:
路由配置文件:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import HomePage from '@/pages/home.vue'
Vue.use(Router)
const router=new Router({routes: [{path: '/',name: 'HelloWorld',component: HelloWorld},{path: '/home',name: 'home',component: HomePage},{path:'*',redirect:'/home'}],
})router.beforeEach((to,from,next)=>{console.log(to);console.log(from);next();})export default router;

打印结果如下:


实现用户验证的代码:

router.beforeEach((to, from, next) => {//我在这里模仿了一个获取用户信息的方法let isLogin = window.sessionStorage.getItem('userInfo');if (isLogin) {//如果用户信息存在则往下执行。next()} else {//如果用户token不存在则跳转到login页面if (to.path === '/login') {next()} else {next('/login')}}
})

afterEach:

和beforeEach不同的是afterEach不接收第三个参数 next 函数,也不会改变导航本身,一般beforeEach用的最多,afterEach用的少.

router.afterEach((to,from)=>{ //这里不接收nextconsole.log(to);console.log(from);
})

到底了!看看别的吧

  前端的学习不是一蹴而就,不积跬步无以至千里,不积小流无以成江海。持续不断的努力才能让你我有所收获,专业的知识还得到机构去学习,培训机构的设立有其存在的必然性,你钱花对了吗?

推荐阅读:
10分钟搞懂vuex
浅谈hooks
vue 组件设计原则
Tree Shaking 概念详解
深入解读 vue 修饰符 sync

5分钟学会vue中的路由守卫相关推荐

  1. vue中的路由守卫(导航守卫)

    在项目开发中每一次路由的切换或者页面的刷新都需要判断用户是否已经登录,前端可以判断,后端也会进行判断的,我们前端最好也进行判断. vue-router提供了导航钩子:全局前置导航钩子 beforeEa ...

  2. 15分钟学会vue项目改造成SSR

    15分钟学会vue项目改造成SSR Ps:网上看了好多服务器渲染的例子,基本都是从0开始的,用Nuxt或者vue官网推荐的ssr方案(vue-server-renderer),但是我们在开发过程中基本 ...

  3. Vue中进行全局守卫

    前言:项目中大多数都是通过路由来进行跳转的,但是普遍的都会进行登陆验证后才能进入下一页面,这时候就需要守卫了,本博文主要讲解vue中的全局守卫 . 全局守卫 在main.js中进行配置: import ...

  4. 三分钟学会css3中的flexbox布局

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章里我们将学习CSS里flexbox布局的几个最重要的概念,通过学习flexbox布局,你会发现以往遇到的所有的关于布局 ...

  5. vue中实现路由跳转的三种方式(超详细整理)

    vue中实现路由跳转的三种方式 一.使用vue-router vue-router 本质是一个第三方的包 用的时候需要下载 步骤 (7步法 ): 下载vue-router模块到当前工程 yarn ad ...

  6. 【Vue】vue中的路由导航守卫(路由的生命周期)

    文章目录 全局前置守卫 可选的第三个参数 `next` 全局解析守卫 router.beforeResolve 全局后置钩子 路由独享的守卫 组件内的守卫 可用的配置 API 使用组合 API 完整的 ...

  7. Vue学习:Vue中的路由详解(完整版)

    一.vue-router的理解 首先,需要理解一下vue-router: vue-router是vue的一个插件,专门用来实现SPA应用.SPA也就是单页Web应用,特点是:整个应 用只有一个完整的页 ...

  8. Vue中vue-router路由使用分析

    题记 -- 严于律己,精于行动,点滴积累,着眼未来,你也许不负青春 本小节描述 1.前端路由的两种主流实现方式 hash 与 history对象 简述 2.分析使用在 vue 中通过 vue-rout ...

  9. vue中的路由跳转和传参

    一:注意:在 Vue 实例中,你可以通过 $router 访问路由实例.因此你可以调用 this.$router.push("路由地址")来跳转到目标路由页面: 想要导航到不同的 ...

最新文章

  1. Confluence 6 创建小组的公众空间
  2. 重大合同实为旧事 数据港信披被上交所问询
  3. Linux内核--网络协议栈深入分析(一)--与sk_buff有关的几个重要的数据结构
  4. python五子棋单机版源代码_python实现单机五子棋
  5. Winform中使用OpenFileDialog选择文件打开并获取文件路径
  6. [设计模式] 8 组合模式 Composite
  7. spring EL 实现ref的效果
  8. 知名Node.js组件存在代码注入漏洞
  9. Python就业涨薪小技巧!
  10. HCIE-RS面试--RSTP为什么优于STP
  11. go.mod 文件中的 //indirect
  12. HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
  13. PMP培训一般是多久?怎么收费?
  14. c语言 音符符号大全,音符符号大全
  15. c#中datagridview清空数据并删除空白行
  16. 木子-前端-ajax传值与接收最简单的方式
  17. 为什么百兆网卡只能传输速度只能为10M/s
  18. 英语掌握的程度,与Python有没有关系
  19. autocad不能画图_记住这10个cad画图技巧,轻松精通cad
  20. 输入一个正整数,判断它是否是回文数。要求定义和调用函数:int isPalindrome(int n),如果n是回文数,该函数返回1,否则返回0。回文数是指正读和反读都相同的数。

热门文章

  1. 计算机正常充电环境温度范围,笔记本电脑的充电突然变得很慢怎么了?给1%的电池充电只需7到8分钟...
  2. /mnt/share 下无法修改权限
  3. 细说ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32编码
  4. 并不对劲的fhq treap
  5. 关系数据库设计及数据库标准语言SQL(多表查询)
  6. Android 模拟器如何安装apk以及如何解决无法安装的问题
  7. 20210417 simulink导入CSV
  8. Android使用OpenGL ES 3.0实现随手指旋转3D立方体
  9. 锁定计算机后点鼠标屏幕无反应,电脑鼠标点击桌面没有反应怎么办
  10. docker部署java服务