Token自动刷新机制:QueuedInterceptor实现无感刷新,只有彻底过期才跳转登录
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user