今天给大家写一篇关于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页面 很简单的逻辑 

 

Logo

前往低代码交流专区

更多推荐