今天给大家写一篇关于vue校验登录状态,如果是非法登录就跳转到登录页面的效果

它的具体实现是一个router.beforeEach的钩子,每次路由切换时触发,写法如下

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

beforeEach函数有三个参数:

  • to:即将进入的路由对象
  • from:当前导航即将离开的路由
  • next,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。

使用案例Demo

限制登陆功能,具体实现思路:每次跳转路由是判断本地 localStorage.getItem('token') 状态

路径:找到router->index.js如下

import Vue from 'vue' import Router from 'vue-router' Vue.use(Router)  const router = new Router({   routes: [{       path: '/',       name: 'HelloWorld',       component: HelloWorld     },     {       path: '/login',       name: 'login',       component: login     }   ] }) //下面是重点  router.beforeEach((to, from, next) => {   let token = localStorage.getItem('token')    if (to.path == '/login') {     next()   } else {     if (token == '' || token == null) {       next('/login');     } else {       next()     }   }  })  export default router;

解释:index.js写成如上形式,用const router 接受 new Router对象,最后export暴露出去

router.beforeEach 在每次路由跳转出发

let token = localStorage.getItem('token')  获取本地没有没token 如果没有就跳到login页面 很简单的逻辑