30 lines
746 B
TypeScript
30 lines
746 B
TypeScript
import router from './router'
|
|
import { isPathMatch } from '@utils/validate'
|
|
import { Session } from '@renderer/utils/storage'
|
|
|
|
// 白名单
|
|
const whiteList = ['/login', '/register']
|
|
|
|
const isWhiteList = (path: string) => whiteList.some(pattern => isPathMatch(pattern, path))
|
|
|
|
router.beforeEach((to: any, _from: any, next: any) => {
|
|
if(Session.getToken()) {
|
|
// has token
|
|
if (to.path === '/login') {
|
|
next({path: '/home'})
|
|
} else if (isWhiteList(to.path)) {
|
|
next()
|
|
} else {
|
|
next()
|
|
}
|
|
} else {
|
|
// no token
|
|
if (isWhiteList(to.path)) {
|
|
// 在免登录白名单,直接进入
|
|
next()
|
|
} else {
|
|
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
|
}
|
|
}
|
|
})
|