Kaynağa Gözat

优化用户登出逻辑,添加用户主动登出标记,确保游客账户创建时状态正确

wuyi 3 ay önce
ebeveyn
işleme
885a9d02d7
2 değiştirilmiş dosya ile 6 ekleme ve 1 silme
  1. 1 1
      src/App.vue
  2. 5 0
      src/store/user.ts

+ 1 - 1
src/App.vue

@@ -48,7 +48,7 @@ onMounted(async () => {
       userStore.logout();
       showLoginDialog.value = true;
     });
-  } else {
+  } else if (!userStore.userManuallyLoggedOut) {
     await createGuestAccount();
   }
 });

+ 5 - 0
src/store/user.ts

@@ -6,6 +6,7 @@ import { useStorage } from "@vueuse/core";
 export const useUserStore = defineStore("user", () => {
   const token = useStorage("token", "");
   const userInfo = ref<any>({});
+  const userManuallyLoggedOut = useStorage("userManuallyLoggedOut", false);
 
   const setToken = (newToken: string) => {
     token.value = newToken;
@@ -19,6 +20,7 @@ export const useUserStore = defineStore("user", () => {
     const response = await apiLogin(username, password);
     setToken(response.token);
     setUserInfo(response.user);
+    userManuallyLoggedOut.value = false; // 登录成功后清除主动退出标记
     return response;
   };
 
@@ -30,6 +32,7 @@ export const useUserStore = defineStore("user", () => {
   const logout = () => {
     token.value = "";
     userInfo.value = {};
+    userManuallyLoggedOut.value = true;
   };
 
   const createGuest = async (code?: string) => {
@@ -37,6 +40,7 @@ export const useUserStore = defineStore("user", () => {
       const response = await newGuest(code);
       setToken(response.token);
       setUserInfo(response.user);
+      userManuallyLoggedOut.value = false; // 创建游客账户时也清除主动退出标记
       return response;
     } catch (error) {
       console.error("创建游客账号失败", error);
@@ -47,6 +51,7 @@ export const useUserStore = defineStore("user", () => {
   return {
     token,
     userInfo,
+    userManuallyLoggedOut,
     setUserInfo,
     login,
     logout,