mirror of https://github.com/halo-dev/halo
feat: request health api for session keep-alive (#4949)
#### What type of PR is this? /area console /kind improvement /milestone 2.11.0 #### What this PR does / why we need it: 在 Console 和 UC 轮询 /actuator/health 接口保持登录会话,目前是 5min 请求一次。 #### Which issue(s) this PR fixes: Fixes #4947 #### Does this PR introduce a user-facing change? ```release-note 优化 Console 的登录会话保活机制。 ```pull/4955/head
parent
6e70d2e047
commit
8f83df415c
|
@ -39,6 +39,7 @@ import { usePageUpdateMutate } from "./composables/use-page-update-mutate";
|
||||||
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
||||||
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
||||||
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
||||||
|
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -373,6 +374,9 @@ const handlePreview = async () => {
|
||||||
|
|
||||||
useSaveKeybinding(handleSave);
|
useSaveKeybinding(handleSave);
|
||||||
|
|
||||||
|
// Keep session alive
|
||||||
|
useSessionKeepAlive();
|
||||||
|
|
||||||
// Upload image
|
// Upload image
|
||||||
async function handleUploadImage(file: File) {
|
async function handleUploadImage(file: File) {
|
||||||
if (!isUpdateMode.value) {
|
if (!isUpdateMode.value) {
|
||||||
|
|
|
@ -39,6 +39,7 @@ import { contentAnnotations } from "@/constants/annotations";
|
||||||
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
||||||
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
||||||
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
||||||
|
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -398,6 +399,9 @@ const handlePreview = async () => {
|
||||||
|
|
||||||
useSaveKeybinding(handleSave);
|
useSaveKeybinding(handleSave);
|
||||||
|
|
||||||
|
// Keep session alive
|
||||||
|
useSessionKeepAlive();
|
||||||
|
|
||||||
// Upload image
|
// Upload image
|
||||||
async function handleUploadImage(file: File) {
|
async function handleUploadImage(file: File) {
|
||||||
if (!isUpdateMode.value) {
|
if (!isUpdateMode.value) {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { useUserStore } from "@/stores/user";
|
||||||
|
import { useQuery } from "@tanstack/vue-query";
|
||||||
|
import { computed } from "vue";
|
||||||
|
|
||||||
|
export function useSessionKeepAlive() {
|
||||||
|
const { isAnonymous } = useUserStore();
|
||||||
|
|
||||||
|
useQuery({
|
||||||
|
queryKey: ["health", "keep-session-alive"],
|
||||||
|
queryFn: () => fetch("/actuator/health"),
|
||||||
|
refetchInterval: 1000 * 60 * 5, // 5 minutes
|
||||||
|
refetchOnWindowFocus: true,
|
||||||
|
enabled: computed(() => !isAnonymous),
|
||||||
|
});
|
||||||
|
}
|
|
@ -32,6 +32,7 @@ import PostSettingEditModal from "./components/PostSettingEditModal.vue";
|
||||||
import HasPermission from "@/components/permission/HasPermission.vue";
|
import HasPermission from "@/components/permission/HasPermission.vue";
|
||||||
import { provide } from "vue";
|
import { provide } from "vue";
|
||||||
import type { ComputedRef } from "vue";
|
import type { ComputedRef } from "vue";
|
||||||
|
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -350,6 +351,9 @@ async function handleUploadImage(file: File) {
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Keep session alive
|
||||||
|
useSessionKeepAlive();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
Loading…
Reference in New Issue