Commit b9b3cefe authored by tyn's avatar tyn

路由守卫

parent 68a10ac9
import Vue from 'vue'
import VueRouter from 'vue-router'
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter)
Vue.use(VueRouter);
const routes = [
]
];
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes:[
routes: [
{
path:'/',
path: '/',
redirect: '/login',
},
{
path:'/login',
path: '/login',
// redirect: '/login',
name:'login',
name: 'login',
component: () => import('@/login'),
meta: {
title: "登录页",
needToken: false
}
},
]
})
});
export default router
export default router;
import router from './index';
import store from '@/store/index';
import {
Message
} from 'element-ui';
import {
getToken
} from '@/utils/auth';
// 路由前置守卫
router.beforeEach((to, from, next) => {
to.meta?.title && (document.title = to.meta.title);
// 从cookie中获取token
if (getToken()) {
/**
* 判断前往的path是否为登录页
* 是重定向
* 否则根据用户基本信息 获取当前状态
*/
// 跳转拉取用户基本信息
if (!store.state.user.userInfo?.userId) {
store.dispatch("user/getUserInfo").then(() => {
next();
})
.catch(err => {
Message.error(err.msg || "获取用户信息失败!");
store.dispatch('user/loginOut').finally(() => {
location.href = '/login';
});
});
} else {
next();
}
} else {
/**
* 判断当前前往页面是否需要token
* 不匹配 以及 未带token重定向到登录页
*/
if (to.meta?.needToken === false) {
next();
} else {
next({
path: "/login"
});
}
}
});
\ No newline at end of file
......@@ -5,6 +5,6 @@ Vue.use(Vuex);
export default new Vuex.Store({
modules: {
userModule
user: userModule
}
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment