(二十)VueCli3.0全栈——路由守卫和token过期处理

2019-07-10  本文已影响0人  彼得朱

1、路由守卫

路由守卫:当我们没有登录页面之前,我们访问一些页面都不会真实地进入到里面去。

import Vue from 'vue'
import Router from 'vue-router'
import Index from './views/Index.vue'
import Register from './views/Register'
import Login from './views/Login'
import NotFound from './views/404'
Vue.use(Router)

// router接收
 const router = new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [
    {
      path:'/',
      redirect:'/index'
    },
    {
      path:'/index',
      name:'index',
      component:Index
    },
    {
      path:'/register',
      name:'register',
      component:Register
    },
    {
      path:'/login',
      name:'login',
      component:Login
    },
    {
      path:'/*',
      name:'404',
      component:NotFound
    }
  ]
})

// 路由守卫
router.beforeEach((to, from, next) => {
  // 判断localstorage里面是否有token
  const isLogin = localStorage.eleToken ? true : false;
  
  if(to.path == "/login" || to.path == "/register"){
    next();
  }else{
    // 如果为真,正常跳转,否则跳到登录页面
    isLogin ? next():next('/login');
  }


})

export default router;

用了一个const接收router,在跳转之前进行判断。若localstorage里面有登录时候的token,正常跳转,若没有,则跳转到登录页。

在开发者模式中把之前localstorage里面存储的eleToken清空,再次访问除登录注册的其他页面,会发现页面仍跳转到登录页。

测试路由守卫

成功实现了路由守卫。

2、Token过期处理

配置请求和响应拦截,在登录成功之后,我们应该将我们的token设置为请求头,然后在响应拦截的时候判断当前的token是否是过期的。如果过期,localstorage里面就得删掉过期token,如果没过期,需要token的接口就可以正常使用了。

​ 请求拦截:如果存在localStorage.eleToken,则设置为统一的请求头

​ 响应拦截:判断当前返回的状态码是不是401,如果是401,代表当前token失效,如果失效,需要把失效的token从localstorage里面删掉。

上一篇 下一篇

猜你喜欢

热点阅读