parent
39d354aeab
commit
1d04e86c08
|
|
@ -114,7 +114,7 @@ service.interceptors.response.use(
|
|||
isRefreshToken = true
|
||||
// 1. 如果获取不到刷新令牌,则只能执行登出操作
|
||||
if (!getRefreshToken()) {
|
||||
return handleAuthorized()
|
||||
return handleAuthorized(t('sys.api.timeoutMessage'))
|
||||
}
|
||||
// 2. 进行刷新访问令牌
|
||||
try {
|
||||
|
|
@ -122,7 +122,7 @@ service.interceptors.response.use(
|
|||
const retData = (await refreshTokenRes).data
|
||||
if (retData.code === 1002000499) {
|
||||
//登录被踢下线的处理 by panda 25.04.23
|
||||
return handleOfflineAuthorized(retData.msg)
|
||||
return handleAuthorized(retData.msg)
|
||||
} else {
|
||||
// 2.1 刷新成功,则回放队列的请求 + 当前请求
|
||||
setToken((await refreshTokenRes).data.data)
|
||||
|
|
@ -140,7 +140,7 @@ service.interceptors.response.use(
|
|||
cb()
|
||||
})
|
||||
// 提示是否要登出。即不回放当前请求!不然会形成递归
|
||||
return handleAuthorized()
|
||||
return handleAuthorized(t('sys.api.timeoutMessage'))
|
||||
} finally {
|
||||
requestList = []
|
||||
isRefreshToken = false
|
||||
|
|
@ -175,7 +175,7 @@ service.interceptors.response.use(
|
|||
if (msg === '无效的刷新令牌') {
|
||||
// hard coding:忽略这个提示,直接登出
|
||||
console.log(msg)
|
||||
return handleAuthorized()
|
||||
return handleAuthorized(t('sys.api.timeoutMessage'))
|
||||
} else {
|
||||
ElNotification.error({ title: msg })
|
||||
}
|
||||
|
|
@ -204,11 +204,11 @@ const refreshToken = async () => {
|
|||
axios.defaults.headers.common['tenant-id'] = getTenantId()
|
||||
return await axios.post(base_url + '/system/auth/refresh-token?refreshToken=' + getRefreshToken())
|
||||
}
|
||||
const handleAuthorized = () => {
|
||||
const handleAuthorized = (msg: any) => {
|
||||
const { t } = useI18n()
|
||||
if (!isRelogin.show) {
|
||||
isRelogin.show = true
|
||||
ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {
|
||||
ElMessageBox.confirm(msg, t('common.confirmTitle'), {
|
||||
showCancelButton: false,
|
||||
closeOnClickModal: false,
|
||||
showClose: false,
|
||||
|
|
@ -226,31 +226,4 @@ const handleAuthorized = () => {
|
|||
}
|
||||
return Promise.reject(t('sys.api.timeoutMessage'))
|
||||
}
|
||||
/** 账号被踢下线的处理 by panda 25.04.23 */
|
||||
const handleOfflineAuthorized = (msg: any) => {
|
||||
const { t } = useI18n()
|
||||
if (!isRelogin.show) {
|
||||
// 如果已经到登录页面则不进行弹窗提示
|
||||
if (window.location.href.includes('login')) {
|
||||
return
|
||||
}
|
||||
isRelogin.show = true
|
||||
ElMessageBox.confirm(msg, t('common.confirmTitle'), {
|
||||
showCancelButton: false,
|
||||
closeOnClickModal: false,
|
||||
showClose: false,
|
||||
closeOnPressEscape: false,
|
||||
confirmButtonText: '确定',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
resetRouter() // 重置静态路由表
|
||||
deleteUserCache() // 删除用户缓存
|
||||
removeToken()
|
||||
isRelogin.show = false
|
||||
// 干掉token后再走一次路由让它过router.beforeEach的校验
|
||||
window.location.href = window.location.href
|
||||
})
|
||||
}
|
||||
return Promise.reject(msg)
|
||||
}
|
||||
export { service }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
import type { App } from 'vue'
|
||||
import type { RouteRecordRaw } from 'vue-router'
|
||||
import { createRouter, createWebHistory } from 'vue-router'
|
||||
|
||||
// 自动导入modules目录下的所有静态路由,项目可以按模块分类增加路由文件
|
||||
// by panda & inori_lover 25.03.21
|
||||
const allRouters: RouteRecordRaw[] = Object.values<{ default: RouteRecordRaw[] }>(
|
||||
import.meta.glob('./modules/*.ts', { eager: true })
|
||||
).reduce<RouteRecordRaw[]>((acc, module) => {
|
||||
// just ensure module.default is valid route define
|
||||
if (Array.isArray(module?.default)) {
|
||||
acc.push(...module.default)
|
||||
}
|
||||
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
// 创建路由实例
|
||||
const router = createRouter({
|
||||
history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#,createWebHistory URL不带#
|
||||
strict: true,
|
||||
routes: allRouters, //自动导入的所有静态路由 by panda & inori_lover 25.03.21
|
||||
scrollBehavior: () => ({ left: 0, top: 0 })
|
||||
})
|
||||
|
||||
export const resetRouter = (): void => {
|
||||
const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
|
||||
router.getRoutes().forEach((route) => {
|
||||
const { name } = route
|
||||
if (name && !resetWhiteNameList.includes(name as string)) {
|
||||
router.hasRoute(name) && router.removeRoute(name)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const setupRouter = (app: App<Element>) => {
|
||||
app.use(router)
|
||||
}
|
||||
|
||||
export default router
|
||||
Loading…
Reference in New Issue