// import router from './router' // import store from './store' // import { Message } from 'element-ui' // import NProgress from 'nprogress' // progress bar // import 'nprogress/nprogress.css' // progress bar style // import { getToken } from '@/utils/auth' // get token from cookie // import getPageTitle from '@/utils/get-page-title' // NProgress.configure({ showSpinner: false }) // NProgress Configuration // const whiteList = ['/login'] // no redirect whitelist // router.beforeEach(async(to, from, next) => { // // start progress bar // NProgress.start() // // set page title // document.title = getPageTitle(to.meta.title) // // determine whether the user has logged in // const hasToken = getToken() // if (hasToken) { // if (to.path === '/login') { // // if is logged in, redirect to the home page // next({ path: '/' }) // NProgress.done() // } else { // const hasGetUserInfo = store.getters.name // if (hasGetUserInfo) { // next() // } else { // try { // // get user info // await store.dispatch('user/getInfo') // next() // } catch (error) { // // remove token and go to login page to re-login // await store.dispatch('user/resetToken') // Message.error(error || 'Has Error') // next(`/login?redirect=${to.path}`) // NProgress.done() // } // } // } // } else { // /* has no token*/ // if (whiteList.indexOf(to.path) !== -1) { // // in the free login whitelist, go directly // next() // } else { // // other pages that do not have permission to access are redirected to the login page. // next(`/login?redirect=${to.path}`) // NProgress.done() // } // } // }) // router.afterEach(() => { // // finish progress bar // NProgress.done() // }) // 路由守卫, 控制页面的访问权限 import router from '@/router' import store from '@/store' // 引入一份进度条插件 import NProgress from 'nprogress' // 引入进度条样式 import 'nprogress/nprogress.css' const whiteList = ['/login', '/404'] // 全局前置路由守卫 router.beforeEach(async(to, from, next) => { NProgress.start() // 判断是否有token if (store.getters.token) { // 有token if (to.path === '/login') { // 在登录页 next('/') } else { // 有token, 不在登录页, 会用到用户信息, 可以开始获取 if (!store.getters.userId) { await store.dispatch('user/getUserInfo') } next() } } else { // 没有token if (whiteList.indexOf(to.path) > -1) { // 在白名单 next() } else { next('/login') } } // 主动结束进度条 NProgress.done() }) // 全局后置路由守卫 router.afterEach(() => { // 结束进度条 NProgress.done() })