vue路由守卫实现登录状态管理

有了这段代码,再也不用担心每进入一个页面发送一次checkLogin请求验证了

过多的名词等下次再来解释

看下面两部分:

1、路由文件

    // 登陆页面不需要检测状态,所以不需要守卫
    // login
    {
      path: '/login',
      name: 'login',
      component: Login,
      meta: {
        title: '登录'
      }
    },
    // home页面需要进行登陆状态验证,所以增加路由元信息,mate里面设置要不要守卫
    // home
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: {
        requireLogin: true,
        title: '欢迎回来'
      }
    }

2、hook文件

router.beforeEach(async (to, from, next) => {
    Vue.prototype.$admin = Vue.prototype.$admin || {}
    // check
        // 检验不需要登陆状态的路由
        if (!to.meta.requireLogin) {
            //检验不需要登陆状态路由是否含有状态储存
            if (!Vue.prototype.$admin.status) {
                // 如果没有状态,进行请求
                let res = await Vue.prototype.$api.get('/api')
                Vue.prototype.$admin = res.data || {}
            }
            next()
        } else {
        // 检验需要登陆状态的路由
            // 检验需要登陆状态路由是否含有状态储存
        if (Vue.prototype.$admin.status) {
            // 有就继续
            next()
        } else {
            // 没有就请求
            let res = await Vue.prototype.$api.get('/api')
            if (res.data.status == '已登陆') {
                Vue.prototype.$admin = res.data
                next()
            } else {
                // 请求状态未登录就返回登陆页面
                next('/login')
            }
        }
    }
})

然后就达到了:不管跳转多少页面,就只发送一次checkLogin的请求的效果

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值