permission.js 1.2 KB
Newer Older
Mr.奇淼('s avatar
Mr.奇淼( 已提交
1
import router from './router'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
2
import { store } from '@/store/index'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
3

Mr.奇淼('s avatar
Mr.奇淼( 已提交
4
let asyncRouterFlag = 0
Mr.奇淼('s avatar
Mr.奇淼( 已提交
5

6
const whiteList = ['login']
7

Mr.奇淼('s avatar
Mr.奇淼( 已提交
8 9 10 11 12
router.beforeEach(async(to, from, next) => {
    const token = store.getters['user/token']
        // 在白名单中的判断情况
    if (whiteList.indexOf(to.name) > -1) {
        if (token) {
13
            next({ path: '/layout/dashboard' })
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
        } else {
            next()
        }
    } else {
        // 不在白名单中并且已经登陆的时候
        if (token) {
            // 添加flag防止多次获取动态路由和栈溢出
            if (!asyncRouterFlag) {
                asyncRouterFlag++
                await store.dispatch('router/SetAsyncRouter')
                const asyncRouters = store.getters['router/asyncRouters']
                router.addRoutes(asyncRouters)
                next({...to, replace: true })
            } else {
                next()
            }
        }
        // 不在白名单中并且未登陆的时候
        if (!token) {
            next({
                name: "login",
                query: {
                    redirect: document.location.hash
                }
            })
        }
    }
})