ebc

router.js 1.5KB

    /** * @file 本文件实现路由控制逻辑 * @author PRD UX R&D Dept. */ import Vue from 'vue' import VueRouter from 'vue-router' import { GLoading } from 'aid-desktop' import routes from './routes' // 注册路由插件 Vue.use(VueRouter) const router = new VueRouter({ mode: 'history', routes, scrollBehavior(to, from, savedPosition) { if (savedPosition) { return savedPosition } return { x: 0, y: 0 } } }) router.beforeEach((to, from, next) => { GLoading.$create().start() /* * 在每次视图切换时检查当前用户是否处于登 * 录状态,如果没有登录则跳转到登录视图 * 注意此时是调用getter中的isLogged获 * 取客户端缓存的登录状态。 * 真实登录状态仅在应用初始化和每次服务 * 调用时检查即可,在视图(路由)切换时, * 为了提升视图切换性能(少请求一次服务), * 只需要调用getter中的isLogged进行简 * 单客户端判断。 * 参见src/frame.vue和src/store.js文件中的逻辑。 */ let isLogged = router.app.$options.store.getters['user/isLogged'] // router.app.$store.commit('setTitle', to.meta.title) if (to.meta.ignoreAuth === true) { if (isLogged === true && to.path === '/login') { router.replace({ name: 'orientation' }) } else { next() } } else { if (isLogged === false) { router.replace({ name: 'login' }) } else { next() } } }) router.afterEach(() => { GLoading.$create().finish() }) export default router