vue-router 路由守卫 与 vuex

vue是单页面应用 ,各个页面的跳转需要路由支持,当然也可以 v-if/v-show,但是实际开发中不现实

 为一个项目做鉴权就可以用解决方案去vuex里面读取状态,根据状态 来调用 vue-router的路由守卫来实现,鉴权路由跳转

官方链接: 

https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E5%85%A8%E5%B1%80%E5%89%8D%E7%BD%AE%E5%AE%88%E5%8D%AB

vue-router 路由守卫 与 vuex_第1张图片

 写判断逻辑的时候 一定要注意next()的调用,不能多重调用 会形成死循环,最少要调用一次,不然不会跳转

vue-router 路由守卫 与 vuex_第2张图片 vue-router 路由守卫 与 vuex_第3张图片

这两张图可以看出它的运行机制,在每次跳转前都会执行   beforeEach(),

to.path === '/login'  为true  就会执行  next('/login')  ;其实执行next('/login')  又会执行beforeEach() 所以一直在循环执行,就相当于 路由一直在跳转“/login” 之前  一直没跳成功 

直接 调用next()   让其成功跳转一次  就可以出‘/login’的循环

就相当于 一次 next()的调用  要对应一次成功的路由跳转,上面的情况就是调用了又没有成功跳转,所以一直在哪儿循环...

 

vue-router 路由守卫 与 vuex_第4张图片

 

鉴权超时登录 利用vuex可以存储个时间戳  

vue-router 路由守卫 与 vuex_第5张图片

因为没有后端支持 所以存了个本地,实际开发前后端分离  是应该从服务器读取数据

你可能感兴趣的:(vue,vue-router,vue.js)