vue-router vuex 用户信息管理

实现原理: 每次进行路由跳转检测全局下用户信息状态是否存在

新建store.js文件

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

let store = new Vuex.Store({
  state: {
    userInfo: null
  },
  mutations: {
    GETSTATE (state, data) {
      state[data.name] = data.value;
    }
  },
  actions: {
    getState (context, data) {
      context.commit('GETSTATE', data);
    }
  }
})

export default store

新建router.js文件

import Vue from 'vue';
import Router from 'vue-router';
import store from '@/stores';
import api from '@/api';

Vue.use(Router);

import layout from '@/components/layout/layout.vue';

const router = new Router({
  routes: [
    {
      path: '/',
      redirect: {
        name: 'home'
      }
    },{
      name: 'main',
      path: '/main',
      component: layout,
      children: [
        {
          name: 'home',
          path: '/home',
          component: component: () => import('@/views/home/home')
        }
      ]
    }
  ]
})

router.beforeEach((to, from, next) => {
  // 验证是否登录
  if (store.state.userInfo) {
    next();
  } else {
    api.base.getUserInfo().then((res) => {
      if (res) {
        store.dispatch('getState', { name: 'userInfo', value: res.data });
        next();
      }
    })
  }
})
export default router

 

转载于:https://www.cnblogs.com/eightabs/p/10790936.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值