import router from './index' import { getToken } from '@/utils/auth' import { useUserStore } from '@/store/modules/user' const whiteList = ['/login'] // no redirect whitelist // const setPageTitle = function (meta) { // let title = '海灵标' // if (meta && meta.title) { // title = `${meta.title}` // } // document.title = title // } // 路由守卫 router.beforeEach(async (to, from) => { $loadingBar.start() // setPageTitle(to.meta) const hasToken = getToken() const userStore = useUserStore() if (hasToken) { if (to.path === '/login') { $loadingBar.finish() return { path: '/' } } else { const hasGetUserInfo = userStore.name if (hasGetUserInfo !== '') { return } else { try { // get user info const infoVO = await userStore.getInfo() return { ...to, replace: true } } catch (error) { await userStore.resetToken() // remove token and go to login page to re-login console.error(error) $loadingBar.error() return `/login?redirect=${to.path}` } } } } else { /* has no token */ if (whiteList.indexOf(to.path) !== -1) { // in the free login whitelist, go directly return } else { $loadingBar.finish() return `/login?redirect=${to.path}` } } }) router.afterEach((to) => { if (to.matched.length === 0) { router.push('/404') // fixme 不能自动跳转404, 需要引导 } $loadingBar.finish() })