vue 路由守卫实现登陆校验拦截功能

在router.js路由文件中
beforeEnter 表示在跳转到该页面之前拦截
router.beforeEach 表示不管什么路由切换时都会执行该方法

import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '../views/home/Home'
import Login from '../views/login/Login'

const routes = [{
  path: '/',
  name: 'Home',
  component: Home
}, {
  path: '/login',
  name: 'Login',
  component: Login,
  // 访问login页面之前执行
  beforeEnter (to, from, next) {
    // to 指的是即将跳转到的页面 也就是login页面
    // from 指的是上一个页面是哪里
    const { isLogin } = localStorage
    // next() 表示逻辑继续执行
    // 判断当前是否已登录 如果已经登录直接进主页 否则正常进入当前登录页面
    isLogin ? next({ name: 'Home' }) : next()
  }
}
]

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

// 不管什么路由切换时都会执行该方法
router.beforeEach((to, from, next) => {
  // to 表示到哪去
  // from 表示从哪来
  // 登陆时向localStorage存一下登录状态
  const { isLogin } = localStorage;
  // 如果已登录 或 当前就在登录页 可以执行下一步, 否则 跳去登录页
  (isLogin || to.name === 'Login') ? next() : next({ name: 'Login' })
})

export default router

你可能感兴趣的:(vue.js入门,vue.js,路由拦截,权限管理)