• 锦oa路由守卫-全局


    import router from './router/router'
    import store from './store'
    import { validatenull } from '@/util/validate'
    import { getToken } from '@/util/auth'

    import NProgress from 'nprogress' // progress bar
    import 'nprogress/nprogress.css' // progress bar style

    NProgress.configure({ showSpinner: false });

    const lockPage = store.getters.website.lockPage; //锁屏页

    router.beforeEach((to, from, next) => {
      const meta = to.meta || {};
      const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
      store.commit('SET_IS_MENU', isMenu === undefined);
      if (getToken()) {
        // 如果系统激活锁屏,全部跳转到锁屏页
        if (store.getters.isLock && to.path != lockPage) {
          next({ path: lockPage })
        }
        // 如果登录成功访问登录页跳转到主页
        else if (to.path === '/home') {
          next({ path: '/' })
        }
        // 如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页
        else {
          if (store.getters.roles.length === 0) {
            store.dispatch('GetUserInfo').then(() => {
              
              next({ ...to, replace: true })
            }).catch(() => {
              store.dispatch('FedLogOut').then(() => {
                next({ path: '/home' })
              })
            })
          } else {
            const value = to.query.src || to.fullPath;
            const label = to.query.name || to.name;
            const meta = to.meta || router.$avueRouter.meta || {};
            const i18n = to.query.i18n;

            if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
              store.commit('ADD_TAG', {
                label: label,
                value: value,
                params: to.params,
                query: to.query,
                meta: (() => {
                  return !i18n ? meta : i18n
                })(),
                group: router.$avueRouter.group || []
              });
            }
            next()
          }
        }
      } else {
        //判断是否需要认证,没有登录访问去登录页
        if (meta.isAuth === false) {
          next()
        } else {
          next('/home')
        }
      }
    })

    router.afterEach(() => {
      NProgress.done();
      let title = store.getters.tag.label;
      let i18n = store.getters.tag.meta.i18n;
      title = router.$avueRouter.generateTitle(title, i18n)
      //根据当前的标签也获取label的值动态设置浏览器标题
      router.$avueRouter.setTitle(title);
    });
  • 相关阅读:
    xcode Git
    The OAuth 2.0 Authorization Framework
    Apache Commons 工具集介绍
    遍历map
    ClassLoader 提供了两个方法用于从装载的类路径中取得资源:
    转:mysql 索引
    StringBuilder与StringBuffer
    第四次作业
    Java Class 与 Object
    软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
  • 原文地址:https://www.cnblogs.com/xiaoxiao95/p/12744783.html
Copyright © 2020-2023  润新知