vue-router的导航守卫

116 阅读1分钟

1. 导航守卫

image-20221006201021495.png

2.全局前置守卫

每次发生路由的导航跳转时,都会触发全局前置守卫。因此,在全局前置守卫中,可以对每个路由进行 访问权限的控制:

router/index.js

//.创建路由示例对象
const router = new VueRouter({
    ........................
})
// 调用实例对象 ,声明全局 前置导航守卫 即 beforeEach
//每次路由跳转,都会自动触发 fn这个回调函数
router.beforeEach(fn)

3.守卫方法的三个形参

//.创建路由示例对象
const router = new VueRouter({
    ........................
})
​
// 为router实例对象 ,声明全局 前置导航守卫 即 beforeEach
// 只要发生了路由的跳转 ->触发 beforeEach指定的function回调函数
router.beforeEach(function (to, from, next) {
  // to 将要访问的路由信息
  // from 将要离开的路由信息对象
  // next()表示放行
  next()
})

4.next 函数的 3 种调用方式

image-20221006200751002.png

5.控制后台主页的访问权限

router.beforeEach(function (to, from, next) {
  // 分析:
  // 1.要拿到用户将要访问的hash地址
  // 2.判断是否等于 /main 如果 等于/main,证明需要登录之后才能访问
  // 3.如果不等于 /main 直接放行 next()
  // 4.如果访问地址是/main 则需要读取loclStorage中的token值
  // 5.如果没有 token 放行
  // 6.如果 没有token 则强制跳转 /login
  if (to.path === '/main') {
    const token = localStorage.getItem('token')
    if (token) {
      next()
    } else {
      next('/login')
    }
  } else {
    next()
  }
})