改进 刷新失败的情况

This commit is contained in:
ivamp 2024-08-03 01:48:23 +08:00
parent 34630760e3
commit ac3f01a11d

View File

@ -1,6 +1,9 @@
import { defineStore } from "pinia";
import { useConfigStore } from "@/stores/config";
import axios from "axios";
let timer: any = null;
export const useUserStore = defineStore("user", {
persist: true,
state: () => ({
@ -39,20 +42,18 @@ export const useUserStore = defineStore("user", {
this.logined = true;
},
setupTimer() {
// 如果有 timer
if (this.timer) {
return;
}
this.timer = setInterval(() => {
timer = setInterval(() => {
if (this.logined) {
if (this.expired_at - Date.now() < 60000) {
this.refresh();
} else {
// 显示还有多长时间过期
console.log(
"Token will expire in " +
(this.expired_at - Date.now()) / 1000 +
" seconds"
);
}
// else {
// // 显示还有多长时间过期
// // console.log("Token will expire in " + (this.expired_at - Date.now()) / 1000 + " seconds");
// }
}
}, 10 * 1000);
},
@ -69,15 +70,26 @@ export const useUserStore = defineStore("user", {
data.set("client_id", configStore.oauth_client_id);
data.set("scope", configStore.oauth_scope);
// axios
let refresh = await axios.post(discovery.data.token_endpoint, data);
this.login(
refresh.data.id_token,
refresh.data.access_token,
refresh.data.refresh_token,
refresh.data.expires_in
);
axios
.post(discovery.data.token_endpoint, data)
.then((response) => {
this.login(
response.data.id_token,
response.data.access_token,
response.data.refresh_token,
response.data.expires_in
);
})
.catch((error) => {
// if 401
if (error.response.status == 401) {
console.log("Refresh token failed");
}
// logout
this.logout();
clearInterval(timer);
return;
});
},
logout() {
this.user = {