fix(web): sync auth expiry state

This commit is contained in:
mlogclub
2026-04-30 18:10:01 +08:00
parent d300e0f00e
commit 880148d679
3 changed files with 37 additions and 8 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
import { clearSession, readSession } from "@/lib/auth"
import { expireSession, readSession } from "@/lib/auth"
const API_BASE_URL =
process.env.NEXT_PUBLIC_API_BASE_URL?.trim() || ""
@@ -20,7 +20,7 @@ async function parseResult<T>(response: Response) {
const payload = (await response.json()) as JsonResult<T>
if (!response.ok || !payload.success) {
if (payload.errorCode === 3000 || payload.errorCode === 3002) {
clearSession()
expireSession()
}
const error = new Error(payload.message || "请求失败")
;(error as Error & { errorCode?: number }).errorCode = payload.errorCode
+9
View File
@@ -16,6 +16,7 @@ export type AuthSession = {
}
const SESSION_STORAGE_KEY = "cs-ai-agent-session"
export const AUTH_SESSION_EXPIRED_EVENT = "cs-ai-agent-auth-expired"
function hasWindow() {
return typeof window !== "undefined"
@@ -52,3 +53,11 @@ export function clearSession() {
}
window.localStorage.removeItem(SESSION_STORAGE_KEY)
}
export function expireSession() {
if (!hasWindow()) {
return
}
clearSession()
window.dispatchEvent(new Event(AUTH_SESSION_EXPIRED_EVENT))
}