fixbug
This commit is contained in:
parent
2372727305
commit
51ce890db7
@ -25,6 +25,7 @@ request.interceptors.request.use((config)=>{
|
|||||||
request.interceptors.response.use(async (res)=>{
|
request.interceptors.response.use(async (res)=>{
|
||||||
// 如果返回401,说明token过期,需要重新登录
|
// 如果返回401,说明token过期,需要重新登录
|
||||||
if (res && res.data.code === 401) {
|
if (res && res.data.code === 401) {
|
||||||
|
console.log("token过期");
|
||||||
return getRefreshToken(res);
|
return getRefreshToken(res);
|
||||||
}
|
}
|
||||||
loading?.close()
|
loading?.close()
|
||||||
@ -34,6 +35,7 @@ request.interceptors.response.use(async (res)=>{
|
|||||||
});
|
});
|
||||||
// 获取刷新token,刷新token成功后重新请求
|
// 获取刷新token,刷新token成功后重新请求
|
||||||
const getRefreshToken = async (response) => {
|
const getRefreshToken = async (response) => {
|
||||||
|
console.log("刷新token",isRefreshing);
|
||||||
if (!isRefreshing) {
|
if (!isRefreshing) {
|
||||||
isRefreshing = true;
|
isRefreshing = true;
|
||||||
const refreshToken = Local.get("RefreshToken");
|
const refreshToken = Local.get("RefreshToken");
|
||||||
@ -74,6 +76,7 @@ const getRefreshToken = async (response) => {
|
|||||||
} else {
|
} else {
|
||||||
// 重新登录
|
// 重新登录
|
||||||
await router.push('/login')
|
await router.push('/login')
|
||||||
|
loading?.close()
|
||||||
return Promise.reject(response);
|
return Promise.reject(response);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -135,6 +135,7 @@ const handleResponseStream = async (reader) => {
|
|||||||
} = await reader.read();
|
} = await reader.read();
|
||||||
if (!done) {
|
if (!done) {
|
||||||
let decoded = new TextDecoder().decode(value);
|
let decoded = new TextDecoder().decode(value);
|
||||||
|
console.log(decoded,'decoded')
|
||||||
let decodedArray = decoded.split("data: ");
|
let decodedArray = decoded.split("data: ");
|
||||||
for (const decoded of decodedArray) {
|
for (const decoded of decodedArray) {
|
||||||
if (decoded !== "") {
|
if (decoded !== "") {
|
||||||
@ -159,6 +160,56 @@ const handleResponseStream = async (reader) => {
|
|||||||
await handleResponseStream(reader);
|
await handleResponseStream(reader);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
let isRefreshing = false;
|
||||||
|
let refreshSubscribers = [];
|
||||||
|
// 获取刷新token,刷新token成功后重新请求
|
||||||
|
const getRefreshToken = async (response) => {
|
||||||
|
if (!isRefreshing) {
|
||||||
|
isRefreshing = true;
|
||||||
|
const refreshToken = Local.get("RefreshToken");
|
||||||
|
if (refreshToken) {
|
||||||
|
try {
|
||||||
|
const data = { refreshToken };
|
||||||
|
const res = await fetch(
|
||||||
|
import.meta.env.VITE_APP_API_BASE_URL+"/user/refresh/token",
|
||||||
|
{
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
},
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const responseData = await res.json(); // Parse the response body as JSON
|
||||||
|
if (responseData.code === 200) {
|
||||||
|
Local.set("token", responseData.data.Token);
|
||||||
|
Local.set("userInfo", responseData.data.AccountInfo);
|
||||||
|
Local.set("RefreshToken", responseData.data.RefreshToken);
|
||||||
|
location.reload();
|
||||||
|
} else {
|
||||||
|
// 重新登录
|
||||||
|
await router.push('/login');
|
||||||
|
responseData.message = responseData.message || responseData.msg;
|
||||||
|
return Promise.reject(responseData);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return Promise.reject(error);
|
||||||
|
} finally {
|
||||||
|
isRefreshing = false;
|
||||||
|
refreshSubscribers.forEach((callback) => callback());
|
||||||
|
refreshSubscribers = [];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 重新登录
|
||||||
|
await router.push('/login')
|
||||||
|
return Promise.reject(response);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
const sendDataStream = async () => {
|
const sendDataStream = async () => {
|
||||||
const params = createParams();
|
const params = createParams();
|
||||||
fileList.value = []
|
fileList.value = []
|
||||||
@ -183,12 +234,18 @@ const sendDataStream = async () => {
|
|||||||
Authorization: Local.get('token'),
|
Authorization: Local.get('token'),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
console.log(response,'response')
|
||||||
const contentType = response.headers.get('Content-Type');
|
const contentType = response.headers.get('Content-Type');
|
||||||
if (!contentType || !contentType.includes('application/json')) {
|
if (!contentType || !contentType.includes('application/json')) {
|
||||||
const reader = response.body.getReader();
|
const reader = response.body.getReader();
|
||||||
dataSources.value[dataSources.value.length - 1].text = ''
|
dataSources.value[dataSources.value.length - 1].text = ''
|
||||||
await handleResponseStream(reader);
|
await handleResponseStream(reader);
|
||||||
|
}else{
|
||||||
|
const responseData = await response.json();
|
||||||
|
if (responseData.code === 401) {
|
||||||
|
await getRefreshToken(response);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('发生错误:', error);
|
console.error('发生错误:', error);
|
||||||
|
Loading…
Reference in New Issue
Block a user