1
0
mirror of https://github.com/zclzone/vue-naive-admin.git synced 2025-12-28 12:10:20 +08:00

refactor: 重构异常处理

This commit is contained in:
张传龙
2022-06-17 22:44:32 +08:00
parent f0b6ce7d20
commit ae43ffb94f
6 changed files with 67 additions and 71 deletions

View File

@@ -1,6 +1,6 @@
import { router } from '@/router'
import { getToken, removeToken } from '@/utils/token'
import { isNullOrUndef } from '../is'
import { getToken } from '@/utils/token'
import { toLogin } from '@/utils/auth'
import { isNullOrUndef } from '@/utils/is'
import { isWithoutToken } from './helpers'
export function reqResolve(config) {
@@ -15,25 +15,22 @@ export function reqResolve(config) {
}
const token = getToken()
if (token) {
if (!token) {
/**
* * jwt token
* ! 认证方案: Bearer
* * 未登录或者token过期的情况下
* * 跳转登录页重新登录,携带当前路由及参数,登录成功会回到原来的页面
*/
if (!config.headers.Authorization) config.headers.Authorization = 'Bearer ' + token
return config
toLogin()
return Promise.reject({ code: '-1', message: '未登录' })
}
/**
* * 未登录或者token过期的情况下
* * 跳转登录页重新登录,携带当前路由及参数,登录成功会回到原来的页面
* * jwt token
* ! 认证方案: Bearer
*/
const { currentRoute } = router
router.replace({
path: '/login',
query: { ...currentRoute.query, redirect: currentRoute.path },
})
return Promise.reject({ code: '-1', message: '未登录' })
config.headers.Authorization = config.headers.Authorization || 'Bearer ' + token
return config
}
export function reqReject(error) {
@@ -48,33 +45,27 @@ export function repReject(error) {
let { code, message } = error.response?.data || {}
if (isNullOrUndef(code)) {
// 未知错误
console.error('【err】' + error)
return Promise.reject({ code: -1, message: '接口异常!', error })
code = -1
message = '接口异常!'
} else {
/**
* TODO 此处可以根据后端返回的错误码自定义框架层面的错误处理
*/
switch (code) {
case 401:
message = message || '登录已过期'
break
case 403:
message = message || '没有权限'
break
case 404:
message = message || '资源或接口不存在'
break
default:
message = message || '未知异常'
break
}
}
/**
* TODO 此处可以根据后端返回的错误码自定义框架层面的错误处理
*/
switch (code) {
case 401:
message = message || '未登录'
// * 处理未登录的情况
removeToken()
const { currentRoute } = router
router.replace({
path: '/login',
query: { ...currentRoute.query, redirect: currentRoute.path },
})
break
case 403:
message = message || '没有权限'
// TODO 处理没有权限的情况
break
case 404:
message = message || '资源或接口不存在'
// TODO 处理资源或接口不存在的情况
break
default:
break
}
return Promise.resolve({ code, message })
console.error(`${code}${error}`)
return Promise.resolve({ code, message, error })
}