import router from './router' import store from './store' import NProgress from 'nprogress' import 'nprogress/nprogress.css' import auth from '@/utils/auth' import { uaredirect } from '@/utils/uaredirect' NProgress.configure({ showSpinner: false }) const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/pay', '/question/preview'] const uaWhiteList = ['/question/preview'] router.beforeEach((to, from, next) => { NProgress.start() if (auth.getToken()) { console.log(to, 'to') if (typeof (to.meta) == "object" && to.meta.hasOwnProperty("isWideScreen")) { store.commit('SET_IS_WIDESCREEN', to.meta.isWideScreen) } else { store.commit('SET_IS_WIDESCREEN', false) } /* has token*/ // if (to.path === '/login') { // next({ path: '/' }) // NProgress.done() // } else { // TODO: hht 22.1.5 这里暂时判断有无有效路由,没有就尝试重构。 // 这样不太合适,没有充分利用缓存。 if (!store.getters.permission_routes?.length) { // 判断当前用户是否已拉取完user_info信息 store.dispatch('GetInfo').then(() => { store.dispatch('GenerateRoutes').then(accessRoutes => { // 根据roles权限生成可访问的路由表 router.addRoutes(accessRoutes) // 动态添加可访问路由表 next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 }) }).catch(err => { console.log('force logout with error', err); store.dispatch('LogOut').then(() => { //Message.error(err) next({ path: '/' }) }) }) } else { next() } // } } else { // 没有token if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入 // if (!uaWhiteList.includes(to.path)) uaredirect() // TODO: hht 22.7.4 临时注释测试班牌打不开的问题 next() } else { // next() next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 NProgress.done() } } }) router.afterEach(() => { NProgress.done() })