vue路由守卫+cookie实现页面跳转时验证用户是否登录----(二)设置路由守卫

上一篇我们已经封装好了cookie方法,登录成功之后也可以吧用户信息存到cookie中,接下来需要在router/index.js中引入一下cookie.js文件

 

然后继续添加以下代码

/*
* beforeEach:从一个页面跳转到另外一个页面时触发
* to:要跳转的页面
* from:从哪个页面出来
* next:决定是否通过
*/
router.beforeEach((to, from, next) => {
  // 如果跳转的页面不存在,跳转到404页面
  if(to.matched.length===0){
    next('/404')
  }
  if (cookie.getCookie("openId")) {
    next()
  } else {    
    if (to.path === "/Login") {
      next()
    } else {
      next('/Login')
    }
  }
})

 

 router.beforeEach意思是在router.index设置了一个全局守卫,只要发生页面跳转,会执行里面的代码,首先先去判断跳转的页面是否存在,如果不存在进到404页面,然后调用cookie.getCookie()方法读取用户信息,如果不存在代表没有登录,用next('/Login')进入Login登录页面进行登录,如果读取到了用户信息,不做拦截直接放行。

 

 

 

 

 

 

扩展

全局后置钩子

router.afterEach((to,from)=>{})表示从当前页面离开时进行判断,一般用来跳转页面时提示用户是否离开该页面。

路由独享的守卫

beforeEnter:(to,from,next)=>{},用法与全局守卫一致。只是,将其写进其中一个路由对象中,只在这个路由下起作用

好了,以上就是cookie+路由守卫实现的跳转验证。如有不足之处,欢迎各位大佬指正。

posted @ 2020-04-18 10:25  Y-X南川  阅读(3069)  评论(1编辑  收藏  举报