Newer
Older
smartwell_app_front / src / permission.js
StephanieGitHub on 13 Aug 2021 2 KB MOD: 增加全国注册备案号
import router from './router'
import store from './store'
import NProgress from 'nprogress' // progress bar 进度条
import 'nprogress/nprogress.css' // progress bar style 进度条样式
import { getToken } from '@/utils/auth' // getToken from cookie
import { MyLocalStorage } from '@/assets/js/utils'
import { TOKEN, AD_FLAG, LOGIN_FLAG, SLIDER_FLAG, USER_ACCOUNT, USER_PWD } from '@/assets/js/storageConst'
import { Toast } from 'mint-ui'

console.log(SLIDER_FLAG)

NProgress.configure({ showSpinner: false })// NProgress configuration

const whiteList = ['/login','/slider','/error','/testpage','/aboutUs'] // 不重定向白名单
// 全局钩子
router.beforeEach((to, from, next) => {
  NProgress.start() // 加载进度条
  console.log('to Path:'+to.path)
  const slider_flag = localStorage.getItem(SLIDER_FLAG)
  const token = getToken()
  console.log("token:"+token)
  // 如果有token
  if (getToken()) {
    // 如果目标页时登录页进入登录页
    if (to.path === '/login') {
      next()
      NProgress.done() // if current page is dashboard will not trigger	afterEach hook, so manually handle it
    } else {
      // 当进入非登陆页时
      console.log('not to login ')
      if (store.getters.roleList.length === 0) { // 判断当前用户是否已拉取完user_info信息,如果角色信息为空,则重新拉取用户信息
        //清除缓存token
        console.log('无角色')
        store.dispatch('GetInfo').then(res => { // 拉取用户信息
          next()
        }).catch((err) => { // 拉取信息失败,清除缓存后重试
          console.log('拉取用户信息失败,清除缓存后重试')
          MyLocalStorage.Cache.remove(TOKEN)
          next()
        })
      } else { // 角色信息存在,继续跳转
        next()
      }
    }
  } else {// 如果没有token
    debugger
    if (whiteList.indexOf(to.path) !== -1) { // 免登录白名单,直接进入
        next()
    } else {// 如果不在白名单
      //测试代码
      // next({path: '/testpage'})
      // 先请求token
      store.dispatch('IDLogin').then(res => { // 后台请求token
        next()
      }).catch((err) => { // 获取token失败,跳转错误页面
        console.log("获取token失败")
        //清除缓存
        MyLocalStorage.Cache.remove(TOKEN)
        Toast("获取用户信息失败,请退出后重试")
      })
    }
  }
})

router.afterEach(() => {
  NProgress.done() // 结束Progress
})