import router from './router' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style import { getToken } from '@/utils/auth' // get token from cookie import store from './store' NProgress.configure({ showSpinner: false }) // NProgress Configuration const whiteList = ['/login'] router.beforeEach((to, from, next) => { let routerTemp = store.state.resetRouterTemp // start progress bar NProgress.start() // determine whether the user has logged in const hasToken = getToken() if (hasToken) { if (routerTemp) { next() } else { store.commit('SET_ROUTER_TEMP', 'TEMP') let roles = store.state.roles store.commit('permission/SET_ROUTES', { roles }) router.addRoutes(store.state.permission.routes) // hack method to ensure that addRoutes is complete // set the replace: true, so the navigation will not leave a history record next({ ...to, replace: true }) } } else { // other pages that do not have permission to access are redirected to the login page. if (whiteList.indexOf(to.path) !== -1) { next() } else { next(`/login?redirect=${to.path}`) // 重定向到登录页 NProgress.done() } } }) router.afterEach(() => { // finish progress bar NProgress.done() })