【类 型】:fix 路由守卫bug 问题提

【原  因】:next() 并不返回一个 Promise 所以它后面调用 catch()会导致错误
【过  程】:
【影  响】:

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
This commit is contained in:
tk 2024-09-26 15:03:35 +08:00
parent b8285a322c
commit 22249b4ca3

View File

@ -13,31 +13,30 @@ router.beforeEach((to, from, next) => {
NProgress.start()
// 设置title
document.title = getPageTitle(to.meta.title)
// 路由
store.commit('user/initUser')// 用户信息初始化 PS:token不存在 执行且执行一次
store.commit('user/initUser') // 用户信息初始化
const power = store.state.user.power
const token = store.state.user.token
if (token === null) {
if (!token) {
if (to.path === '/login') {
next()
NProgress.done()
} else {
next('/login')
NProgress.done()
next('/login') // 直接调用 next('/login')
}
} else {
if (to.path === '/login') {
next('/')
NProgress.done()
} else {
if (to.meta.roles.indexOf(power) >= 0) { // 判断 roles权限 有权限打开页面 没权限跳转到首页
if (to.meta.roles && to.meta.roles.indexOf(power) >= 0) { // 确保 roles 存在
next()
} else {
next('/')
}
NProgress.done()
}
}
NProgress.done()
})
/**
@ -53,9 +52,5 @@ router.afterEach(() => {
* @param {*} pageTitle 路由mate.tiele
*/
function getPageTitle (pageTitle) {
if (pageTitle) {
return `${pageTitle} - ${store.state.settings.title}`
} else {
return store.state.settings.title
}
return pageTitle ? `${pageTitle} - ${store.state.settings.title}` : store.state.settings.title
}