🍒 feat(Web): 使用服务器时间比较token的有效期

This commit is contained in:
喵你个汪呀 2025-08-29 19:46:24 +08:00
parent e943e8afae
commit 14be6adacc
3 changed files with 13 additions and 2 deletions

View File

@ -46,6 +46,7 @@ declare interface RoutesListState<T = any> {
// 布局配置
declare interface ThemeConfigState {
themeConfig: {
serverTime?: Date; // 服务器时间
isDrawer: boolean; // 是否开启抽屉配置
primary: string; // 主题颜色
topBar: string; // 顶部栏背景

View File

@ -11,6 +11,11 @@ import { BaseAPI, BASE_PATH } from '../api-services/system/base';
import { ElMessage } from 'element-plus';
import { Local, Session } from '../utils/storage';
import {useThemeConfig} from "/@/stores/themeConfig";
import {storeToRefs} from "pinia";
const storesThemeConfig = useThemeConfig();
const { themeConfig } = storeToRefs(storesThemeConfig);
// 接口服务器配置
export const serveConfig = new Configuration({
@ -66,7 +71,7 @@ axiosInstance.interceptors.request.use(
const exp = getJWTDate(jwt.exp as number);
// token 已经过期
if (new Date() >= exp) {
if (themeConfig.value.serverTime && themeConfig.value.serverTime >= exp) {
// 获取刷新 token
const refreshAccessToken = Local.get(refreshAccessTokenKey);
@ -103,6 +108,9 @@ axiosInstance.interceptors.request.use(
// axios 响应拦截
axiosInstance.interceptors.response.use(
(res) => {
// 记录服务器时间
themeConfig.value.serverTime = res.data.time ? new Date(res.data.time) : undefined;
// 获取状态码和返回数据
var status = res.status;
var serve = res.data;
@ -241,4 +249,4 @@ export function getJWTDate(timestamp: number): Date {
*/
export function sleep(delay: number) {
return new Promise((resolve) => setTimeout(resolve, delay));
}
}

View File

@ -65,6 +65,8 @@ export async function loadSysInfo(tenantid: number) {
themeConfig.value.onlineNotice = data.onlineNotice;
// 密码加解密公匙
window.__env__.VITE_SM_PUBLIC_KEY = data.publicKey;
// 服务器时间
themeConfig.value.serverTime = res.data.time ? new Date(Date.parse(res.data.time as any)) : undefined;
// 更新 favicon
updateFavicon(data.logo);