Vue中的全局导航守卫(beforeEach、afterEach)

news/2024/7/19 15:28:48 标签: vue, js, javascript

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

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

导航钩子有3个参数:

1、to:即将要进入的目标路由对象;

2、from:当前导航即将要离开的路由对象;

3、next :调用该方法后,才能进入下一个钩子函数(afterEach)。

javascript">next()//直接进to 所指路由
next(false) //中断当前路由
next('route') //跳转指定路由
next('error') //跳转错误路由

beforeEach:

实现用户验证的代码:

javascript">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 用的少

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

http://www.niftyadmin.cn/n/1527259.html

相关文章

Vue中组件内导航守卫(beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave)

在组件中使用路由守卫: beforeRouteEnter (to, from, next) { // 注意,在路由进入之前,组件实例还未渲染,所以无法获取this实例,只能通过vm来访问组件实例if(userData.status 0){//userData为接口返回数据。next(vm > {vm.$m…

基于java awt包的附带登录的学生管理系统图形用户界面程序

文章目录1.前言2.程序入口3.登录注册页面3.主界面4.添加学生界面5.查找学生界面6.显示学生信息7.删除学生界面(和查找学生界面相似,自己太菜,没提高代码复用率)8.根据序号查找学生(相似界面)9.显示所以学生信息(未完成)10.删除所有学生信息,获取学生人数,退出11.学生类12.学生库…

React中受控组件和非受控组件

一、受控组件 受控组件就是可以被 react 状态控制的组件 在 react 中,Input textarea 等组件默认是非受控组件(输入框内部的值是用户控制,和 React 无关)。但是也可以转化成受控组件,就是通过 onChange 事件获取当前输…

React中高阶函数和函数的柯里化

一、高阶函数: 如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数。 若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数。若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶…

maven安装与配置到idea中

maven安装 在官网下载压缩包,网址: https://maven.apache.org/download.cgi?.解压到一个目录,目录最好不要有中文和空格配置环境变量: 新建一个变量: M2_HOME , 变量值为maven的路径(不带bin目录),在PATH变量中追加值: %M2_HOME%\bin 打开cmd输入 mvn -v出现以下内容安装成功…

Elementui中在表格中插入图片

效果&#xff1a; 插入单张选中放大&#xff1a; <el-table-column label"商品详情"><template slot-scope"scope"><el-popover placement"top-start" title"" trigger"hover"><img :src"scope…

React脚手架public文件介绍

public文件夹下index.js <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><!-- %PUBLIC_URL%代表public文件夹的路径 --><link rel"icon" href"%PUBLIC_URL%/favicon.ico" /><…

Elementui实现面包屑($route.matched)

this.$route.matched匹配到的会是一个数组&#xff0c;包含当前页面之前所有路由信息。然后我们可以直接利用路由信息渲染我们的面包屑导航。 //demo <template><div class"nav-wrap"><router-link v-for"(item, index) in navList" :key&…