Commit b9b3cefe authored by tyn's avatar tyn

路由守卫

parent 68a10ac9
import Vue from 'vue' import Vue from 'vue';
import VueRouter from 'vue-router' import VueRouter from 'vue-router';
Vue.use(VueRouter) Vue.use(VueRouter);
const routes = [ const routes = [
] ];
const router = new VueRouter({ const router = new VueRouter({
mode: 'history', mode: 'history',
base: process.env.BASE_URL, base: process.env.BASE_URL,
routes:[ routes: [
{ {
path:'/', path: '/',
redirect: '/login', redirect: '/login',
}, },
{ {
path:'/login', path: '/login',
// redirect: '/login', // redirect: '/login',
name:'login', name: 'login',
component: () => import('@/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); ...@@ -5,6 +5,6 @@ Vue.use(Vuex);
export default new Vuex.Store({ export default new Vuex.Store({
modules: { 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