/** * 认证模块类型定义 */ import type { User } from '@/types'; import type { LoginRequest, LoginResponse, RegisterRequest, RegisterResponse } from '@/types/user'; // 事件类型定义 export type AuthEventType = 'login' | 'logout' | 'register' | 'session_expired' | 'session_authenticated' | 'session_logout'; // 事件监听器类型 export type AuthEventListener = (...args: unknown[]) => void; // 存储适配器接口 - 仅用于非敏感数据存储,不涉及session管理 export interface StorageAdapter { /** * 获取存储项 * @param key 存储键 * @returns 存储值或null */ getItem(key: string): string | null; /** * 设置存储项 * @param key 存储键 * @param value 存储值 */ setItem(key: string, value: string): void; /** * 删除存储项 * @param key 存储键 */ removeItem(key: string): void; /** * 清空所有存储项 */ clear(): void; /** * 获取所有存储键 * @returns 存储键数组 */ keys(): string[]; } // 认证服务接口 export interface AuthService { login(credentials: LoginRequest): Promise; register(userData: RegisterRequest): Promise; logout(): Promise; getCurrentUser(): Promise; isAuthenticated(): Promise; // 改为异步,通过getUser验证 // 事件管理方法 on(event: AuthEventType, listener: AuthEventListener): void; off(event: AuthEventType, listener: AuthEventListener): void; // 会话管理方法 clearCache(): void; } // 会话管理器接口 - 仅作为状态查询器,不主动管理session export interface SessionManager { // 通过getUser验证用户认证状态,而不是直接访问cookie isAuthenticated(): Promise; // 获取当前用户信息,幂等操作 getUserInfo(): Promise; // 清除本地缓存,不影响服务器端session clearCache(): void; } // 扩展 Axios 请求配置以支持认证选项 declare module 'axios' { interface AxiosRequestConfig { skipAuth?: boolean; } }