Эх сурвалжийг харах

fix(frontend): 登录失效清理缓存不再清空服务地址

401/授权失效走 clearAuthCache -> Persistent.clearLocal(true),原先直接 storage.clear(),把服务地址(SERVER_BASE_URL__)、历史地址、主题、语言等与登录态无关的原始键一并抹掉。生产包(VITE_GLOB_REQUIRE_SERVER_SETUP=true)下入口页因此误判「未绑定地址」,登录失效后显示的是服务地址卡片而不是登录框。

改为只删除应用自己的状态快照键(APP_LOCAL_CACHE_KEY / APP_SESSION_CACHE_KEY)。
cc 5 өдөр өмнө
parent
commit
6f9d41afd5

+ 7 - 4
ai-electron/frontend/src/core/utils/cache/persistent.ts

@@ -71,7 +71,10 @@ export class Persistent {
 
   static clearLocal(immediate = false): void {
     localMemory.clear();
-    immediate && ls.clear();
+    // 只删本应用的状态快照键,不能用 storage.clear():服务地址(SERVER_BASE_URL__)、
+    // 主题、语言等原始键与登录态无关。401 清理时被连带抹掉会让入口页误判成
+    // 「还没绑定地址」而展示服务地址卡片,用户下次还得重新填地址。
+    immediate && ls.remove(APP_LOCAL_CACHE_KEY);
   }
 
   static getSession<T>(key: SessionKeys) {
@@ -90,15 +93,15 @@ export class Persistent {
 
   static clearSession(immediate = false): void {
     sessionMemory.clear();
-    immediate && ss.clear();
+    immediate && ss.remove(APP_SESSION_CACHE_KEY);
   }
 
   static clearAll(immediate = false) {
     sessionMemory.clear();
     localMemory.clear();
     if (immediate) {
-      ls.clear();
-      ss.clear();
+      ls.remove(APP_LOCAL_CACHE_KEY);
+      ss.remove(APP_SESSION_CACHE_KEY);
     }
   }
 }