app
scout 4 months ago
parent 2372727305
commit 51ce890db7

@ -25,6 +25,7 @@ request.interceptors.request.use((config)=>{
request.interceptors.response.use(async (res)=>{
// 如果返回401说明token过期需要重新登录
if (res && res.data.code === 401) {
console.log("token过期");
return getRefreshToken(res);
}
loading?.close()
@ -34,6 +35,7 @@ request.interceptors.response.use(async (res)=>{
});
// 获取刷新token刷新token成功后重新请求
const getRefreshToken = async (response) => {
console.log("刷新token",isRefreshing);
if (!isRefreshing) {
isRefreshing = true;
const refreshToken = Local.get("RefreshToken");
@ -74,6 +76,7 @@ const getRefreshToken = async (response) => {
} else {
// 重新登录
await router.push('/login')
loading?.close()
return Promise.reject(response);
}
} else {

@ -135,6 +135,7 @@ const handleResponseStream = async (reader) => {
} = await reader.read();
if (!done) {
let decoded = new TextDecoder().decode(value);
console.log(decoded,'decoded')
let decodedArray = decoded.split("data: ");
for (const decoded of decodedArray) {
if (decoded !== "") {
@ -159,6 +160,56 @@ const handleResponseStream = async (reader) => {
await handleResponseStream(reader);
}
};
let isRefreshing = false;
let refreshSubscribers = [];
// tokentoken
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 params = createParams();
fileList.value = []
@ -183,12 +234,18 @@ const sendDataStream = async () => {
Authorization: Local.get('token'),
},
});
console.log(response,'response')
const contentType = response.headers.get('Content-Type');
if (!contentType || !contentType.includes('application/json')) {
const reader = response.body.getReader();
dataSources.value[dataSources.value.length - 1].text = ''
await handleResponseStream(reader);
}else{
const responseData = await response.json();
if (responseData.code === 401) {
await getRefreshToken(response);
}
}
} catch (error) {
console.error('发生错误:', error);
@ -336,7 +393,7 @@ const footerClass = computed(() => {
})
const isShowBottom=ref(false)
onMounted(() => {
if(!Local.get('token')){
router.push('/login')
}
@ -528,7 +585,7 @@ const customRequest = async (file) => {
</template>
<div class="clearfix">
<NUpload
:max-count="1"
:default-file-list="fileList1"
name="file"

Loading…
Cancel
Save