
【原 因】:next() 并不返回一个 Promise 所以它后面调用 catch()会导致错误 【过 程】: 【影 响】: # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
import router from './router'
|
|
import store from './store'
|
|
import NProgress from 'nprogress' // 进度条
|
|
import 'nprogress/nprogress.css' // 进度条 style
|
|
|
|
NProgress.configure({ showSpinner: false }) // 进度条 Configuration
|
|
|
|
/**
|
|
* @description: 路由守卫
|
|
*/
|
|
router.beforeEach((to, from, next) => {
|
|
// start 进度条
|
|
NProgress.start()
|
|
// 设置title
|
|
document.title = getPageTitle(to.meta.title)
|
|
|
|
store.commit('user/initUser') // 用户信息初始化
|
|
const power = store.state.user.power
|
|
const token = store.state.user.token
|
|
|
|
if (!token) {
|
|
if (to.path === '/login') {
|
|
next()
|
|
} else {
|
|
next('/login') // 直接调用 next('/login')
|
|
}
|
|
} else {
|
|
if (to.path === '/login') {
|
|
next('/')
|
|
} else {
|
|
if (to.meta.roles && to.meta.roles.indexOf(power) >= 0) { // 确保 roles 存在
|
|
next()
|
|
} else {
|
|
next('/')
|
|
}
|
|
}
|
|
}
|
|
|
|
NProgress.done()
|
|
})
|
|
|
|
/**
|
|
* @description: 路由完成 结束进度条
|
|
*/
|
|
router.afterEach(() => {
|
|
NProgress.done() // 结束进度条
|
|
})
|
|
|
|
/**
|
|
* @description: mateTile 和 全局title 组合
|
|
* @return: title
|
|
* @param {*} pageTitle 路由mate.tiele
|
|
*/
|
|
function getPageTitle (pageTitle) {
|
|
return pageTitle ? `${pageTitle} - ${store.state.settings.title}` : store.state.settings.title
|
|
}
|