qnc-webview/src/App.vue

45 lines
1.2 KiB
Vue
Raw Normal View History

2024-12-24 11:28:23 +08:00
<script setup>
import { RouterLink, RouterView } from 'vue-router'
2025-01-04 00:38:57 +08:00
import WechatOverlay from './components/WechatOverlay.vue';
onMounted(() => {
RefreshToken()
})
const RefreshToken = async () => {
const token = localStorage.getItem("token")
const refreshAfter = localStorage.getItem("refreshAfter")
const currentTime = new Date().getTime();
2024-12-24 11:28:23 +08:00
2025-01-04 00:38:57 +08:00
// 1. 如果没有 token直接返回
if (!token) {
return;
}
// 2. 如果有 refreshAfter检查当前时间是否超过 refreshAfterrefreshAfter 是秒级,需要转换为毫秒级)
if (refreshAfter) {
const refreshAfterInMilliseconds = parseInt(refreshAfter) * 1000; // 转换为毫秒级
if (currentTime < refreshAfterInMilliseconds) {
return;
}
}
// 3. 如果没有 refreshAfter 或者时间超过 refreshAfter执行刷新 token 的请求
const { data, error } = await useApiFetch("/user/getToken")
.post()
.json();
if (data.value && !error.value) {
if (data.value !== 200) {
localStorage.setItem("token", data.value.data.accessToken);
localStorage.setItem("refreshAfter", data.value.data.refreshAfter);
}
}
}
2024-12-24 11:28:23 +08:00
</script>
<template>
2025-01-04 00:38:57 +08:00
<WechatOverlay />
2024-12-24 11:28:23 +08:00
<RouterView />
</template>
<style scoped></style>