Conf(拦截器):增加白名单,针对后端返回401不跳转到登录界面

This commit is contained in:
lifizer
2025-04-12 09:19:09 +08:00
parent 6a3a2e74a0
commit 59fee9df18
+20 -9
View File
@@ -63,7 +63,7 @@ const defaultOpt = {login: true};
function baseRequest(options) { function baseRequest(options) {
// 从缓存中获取 token 防止 token 失效后还会继续请求的情况 // 从缓存中获取 token 防止 token 失效后还会继续请求的情况
const token = cookie.get('login_status'); const token = cookie.get('login_status')
// 合并传参过来的 headers // 合并传参过来的 headers
// 如果接口需要登录,携带 token 去请求 // 如果接口需要登录,携带 token 去请求
@@ -85,28 +85,39 @@ function baseRequest(options) {
// 发起请求 // 发起请求
return http[options.method](url, _params).then(res => { return http[options.method](url, _params).then(res => {
const resData = res.data || {}; const resData = res.data || {}
// AI对话某个请求返回为空需要处理这种情况 // AI对话某个请求返回为空需要处理这种情况
if (['get', 'GET'].includes(options.method) && _params.params.isNoNeedPublicErrorNotification === 1) { if (['get', 'GET'].includes(options.method) && _params.params.isNoNeedPublicErrorNotification === 1) {
console.log('----') console.log('----')
if (resData.status === 500) { if (resData.status === 500) {
return Promise.reject({msg: resData.msg, res, data}); return Promise.reject({msg: resData.msg, res, data})
} else { } else {
return Promise.resolve({}) return Promise.resolve({})
} }
} }
if (res.statusCode !== 200) { if (res.statusCode !== 200) {
return Promise.reject({msg: "请求失败", res, resData}); return Promise.reject({msg: "请求失败", res, resData})
} }
if (resData.status === 401) { if (resData.status === 401) {
const whiteApiList = ['guide/status']
let flag = false
whiteApiList.map(item => {
if (options.url.indexOf(item) > -1) {
flag = true
}
})
if (flag) {
return Promise.resolve(resData, res)
} else {
handleLoginFailure(); handleLoginFailure();
return Promise.reject({msg: '未登录', res, resData, toLogin: true}); return Promise.reject({msg: '未登录', res, resData, toLogin: true})
}
} }
if ([ 403].indexOf(resData.status) !== -1) { if ([ 403].indexOf(resData.status) !== -1) {
handleLoginFailure(); handleLoginFailure();
return Promise.reject({msg: res.data.msg, res, resData, toLogin: true}); return Promise.reject({msg: res.data.msg, res, resData, toLogin: true})
} else if (resData.status === 200) { } else if (resData.status === 200) {
return Promise.resolve(resData, res); return Promise.resolve(resData, res)
} else { } else {
// 埋点数据推送、获取店铺分享图片 // 埋点数据推送、获取店铺分享图片
if (url.indexOf('api/systemStats/push') < 0 && url.indexOf('api/hotelMain/shareImage') < 0) { if (url.indexOf('api/systemStats/push') < 0 && url.indexOf('api/hotelMain/shareImage') < 0) {
@@ -118,9 +129,9 @@ function baseRequest(options) {
} }
}) })
} }
return Promise.reject({msg: resData.msg, res, data}); return Promise.reject({msg: resData.msg, res, data})
} }
}); })
} }
/** /**