• 中文
  • 注册
    • 查看作者
    • vue router.beforeEach(),路由卫士拦截详解

      router.beforeEach()一般用来做一些进入页面的限制。比如没有登录,就不能进入某些页面,只有登录了之后才有权限查看某些页面。。。说白了就是路由拦截。

      第一步 规定进入路由需不需要权限

       @/router/index.js
       import A from '@/components/a'
      {
           path: '/a',
           name: 'a',
           component:	A,
           meta : {                      //加一个自定义obj
         			requireAuth:true      //这个参数 true 代表需要登录才能进入A
           }
         },

      第二步 使用vuex整一个userId

      @/assets/store.js
      //使用vuex三步走
      import Vue from 'vue'
      import Vuex from 'vuex'
      Vue.use(Vuex)
      //这个理论来说
      const store = new Vuex.Store({
      	state:{
      		userId : ''
      	}
      })
      
      export default store

      第三步 使用router.beforeEach()

      @/main.js
      思路:【
      如果(即将进入的这个路由需要权限才能进入){
      如果(能获取到这个老哥的userID){
      就让这个老哥进入这个路由
      }否则{
      就让这个老哥进入b这个页面
      }
      } 即将进入的路由不需要权限就能进入 {
      就让这个老哥进入这个路由
      }
      】
      对应代码:
      import store from '@/assets/store'   //把这个userId获取过来
      router.beforeEach((to,from,next)=>{
      if(to.meta.requireAuth){
      if(store.state.userId){
      next()
      }else{
      next({path:'/b'})
      }
      }else{
      next()
      }
      })

      第四步

      第三步这个/b路由其实就是登陆页面,
      当进入A页面之前,需要请求接口,获取一下是否有登陆过,然后把这个userId存在vuex的state里。
      当没有userId时,则在登陆之后,存一个userId到state里。然后就敲完收工

    • 0
    • 0
    • 0
    • 282
    • 请登录之后再进行评论

      登录
    • 做任务
    • 发表内容
    • 实时动态

    • 关于伊迪派 | 联系我们 | 免责声明 | 侵权投诉 | 小黑屋

      本站资源来源于互联网,仅供个人学习参考研究之用,请于下载后24小时内删除。
      如有侵犯您的权益,可通过邮件(admin@idepy.com)、站内通道等方式反馈,本网站将在第一时间处理。
      Copyright © 2019 - 2020 伊迪派(IDEPY), All Rights Reserved · 粤ICP备12030819号-6 · 粤公网安备 44132202100185号