Token自动刷新机制:QueuedInterceptor实现无感刷新,只有彻底过期才跳转登录

This commit is contained in:
2026-04-16 12:55:31 +08:00
parent bfd82b3c8a
commit 5c7aa09207
6 changed files with 53449 additions and 53014 deletions

View File

@@ -6,6 +6,7 @@ class LocalStorage {
LocalStorage._();
static const String _tokenKey = 'token';
static const String _refreshTokenKey = 'refreshToken';
static const String _userInfoKey = 'userInfo';
static SharedPreferences? _prefs;
@@ -43,6 +44,23 @@ class LocalStorage {
/// 是否已登錄
static bool get isLoggedIn => getToken() != null && getToken()!.isNotEmpty;
// ==================== Refresh Token 管理 ====================
/// 保存 Refresh Token
static Future<void> saveRefreshToken(String refreshToken) async {
await prefs.setString(_refreshTokenKey, refreshToken);
}
/// 獲取 Refresh Token
static String? getRefreshToken() {
return prefs.getString(_refreshTokenKey);
}
/// 移除 Refresh Token
static Future<void> removeRefreshToken() async {
await prefs.remove(_refreshTokenKey);
}
// ==================== 用戶信息管理 ====================
/// 保存用戶信息
@@ -96,6 +114,7 @@ class LocalStorage {
/// 清除用戶數據(退出登錄時調用)
static Future<void> clearUserData() async {
await removeToken();
await removeRefreshToken();
await removeUserInfo();
}