diff --git a/public/index.html b/public/index.html index 7027717..a89db15 100644 --- a/public/index.html +++ b/public/index.html @@ -38,8 +38,8 @@ <% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> diff --git a/src/router/index.js b/src/router/index.js index 1182441..8d5b302 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -9,6 +9,7 @@ import Vue from 'vue' import Router from 'vue-router' import http from '@/utils/request' import { isURL } from '@/utils/validate' +import { isAuthentcated } from '../utils' Vue.use(Router) @@ -19,7 +20,7 @@ export const pageRoutes = [ component: () => import('@/views/pages/404'), name: '404', meta: { title: '404未找到' }, - beforeEnter (to, from, next) { + beforeEnter(to, from, next) { // 拦截处理特殊业务场景 // 如果, 重定向路由包含__双下划线, 为临时添加路由 if (/__.*/.test(to.redirectedFrom)) { @@ -43,7 +44,7 @@ export const moduleRoutes = { ] } -export function addDynamicRoute (routeParams, router) { +export function addDynamicRoute(routeParams, router) { // 组装路由名称, 并判断是否已添加, 如是: 则直接跳转 var routeName = routeParams.routeName var dynamicRoute = window.SITE_CONFIG['dynamicRoutes'].filter(item => item.name === routeName)[0] @@ -82,27 +83,39 @@ router.beforeEach((to, from, next) => { // 添加动态(菜单)路由 // 已添加或者当前路由为页面路由, 可直接访问 if (window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] || fnCurrentRouteIsPageRoute(to, pageRoutes)) { + // 如果是在已认证的情况下直接访问登录界面 + if (to.name === 'login') { + return next('/') + } return next() } - // 获取字典列表, 添加并全局变量保存 - http.get('/sys/dict/type/all').then(({ data: res }) => { - if (res.code !== 0) { - return - } - window.SITE_CONFIG['dictList'] = res.data - }).catch(() => {}) - // 获取菜单列表, 添加并全局变量保存 - http.get('/sys/menu/nav').then(({ data: res }) => { - if (res.code !== 0) { - Vue.prototype.$message.error(res.msg) - return next({ name: 'login' }) - } - window.SITE_CONFIG['menuList'] = res.data - fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList']) - next({ ...to, replace: true }) - }).catch(() => { + + if (isAuthentcated()) { + // 获取字典列表, 添加并全局变量保存 + http.get('/sys/dict/type/all').then(({ data: res }) => { + if (res.code !== 0) { + return + } + window.SITE_CONFIG['dictList'] = res.data + }).catch(() => { }) + + // 获取菜单列表, 添加并全局变量保存 + http.get('/sys/menu/nav').then(({ data: res }) => { + if (res.code !== 0) { + Vue.prototype.$message.error(res.msg) + return next({ name: 'login' }) + } + window.SITE_CONFIG['menuList'] = res.data + fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList']) + next({ ...to, replace: true }) + }).catch(() => { + next({ name: 'login' }) + }) + + } else { next({ name: 'login' }) - }) + } + }) /** @@ -110,7 +123,7 @@ router.beforeEach((to, from, next) => { * @param {*} route 当前路由 * @param {*} pageRoutes 页面路由 */ -function fnCurrentRouteIsPageRoute (route, pageRoutes = []) { +function fnCurrentRouteIsPageRoute(route, pageRoutes = []) { var temp = [] for (var i = 0; i < pageRoutes.length; i++) { if (route.path === pageRoutes[i].path) { @@ -128,7 +141,7 @@ function fnCurrentRouteIsPageRoute (route, pageRoutes = []) { * @param {*} menuList 菜单列表 * @param {*} routes 递归创建的动态(菜单)路由 */ -function fnAddDynamicMenuRoutes (menuList = [], routes = []) { +function fnAddDynamicMenuRoutes(menuList = [], routes = []) { var temp = [] for (var i = 0; i < menuList.length; i++) { if (menuList[i].children && menuList[i].children.length >= 1) { diff --git a/src/utils/index.js b/src/utils/index.js index bf8bb9b..b2ee02a 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -97,3 +97,7 @@ export function treeDataTranslate (data, id = 'id', pid = 'pid') { } return res } + +export function isAuthentcated() { + return Cookies.get('token') +} \ No newline at end of file