vue-cli 判断是否需要登陆后访问

2017-12-10  本文已影响0人  吃萝卜的小兔子

一、基础知识

我们用到了导航守卫beforeEach(引自vue的官方文档)。
你可以使用

router.beforeEach

注册一个全局前置守卫:

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中

每个守卫方法接收三个参数:

二、逻辑实现

接下来讲我们的逻辑:
判断下一个页面是否需要登录
如果需要登录:判断是否已登录
如果已登录:访问下一个页面
如果未登录:回到登录界面
如果不需要登录:访问下一个页面

main.js

const router = new VueRouter({store})

router.beforeEach((to, from, next) => {
 if (to.meta.requiresAuth) {      // 下一个页面需要登录
  if(stare.state.bAuth) {        // 已登录
      next()                       // 访问下一个页面
    } else {                       // 未登录
      next('/')                    // 回到登录界面         
    }
  } else {                         //下一个页面不需要登录
    next()                         // 访问下一个页面
  }
})

router.js

routes: [
  {
      path: '/',
      name: 'login',
      component: login
  },
  {
      path: '/home',
      name: 'home',
      component: home,
      meta: {
         requiresAuth: true           //需要登陆的标记,那个页面需要登录哪个页面加这个属性(自定义属性)
      }
  }
]

store.js

state = {
   bAuth: true                     //判断是否已登录的标记
}

login.vue

// 记得引入store

mounted () {
  store.state.bAuth = false    //每次到登录页面时告诉它没有登录,否则只有第一次登录有效
}
$.ajax({
...
success: function (data) {
    store.state.bAuth = true  //成功登录,告诉它已登录
}
...
})
上一篇 下一篇

猜你喜欢

热点阅读