feat(auth): 添加OAuth登录状态持久化功能

实现OAuth登录状态的保存、加载和清除功能,包括:
- 添加三个新的API接口用于状态管理
- 创建useOAuthPersist hook处理状态持久化逻辑
- 在登录流程中自动保存状态
- 在应用启动时自动恢复登录状态
This commit is contained in:
Yukino_fox
2026-04-16 20:51:45 +08:00
parent c58ae5c731
commit 2ef088def5
5 changed files with 332 additions and 1 deletions
+24 -1
View File
@@ -131,7 +131,30 @@ export function OAuthLogin({ visible, onClose, onSuccess }: OAuthLoginProps) {
return
}
console.log("[OAuth] 登录成功,清理资源...")
console.log("[OAuth] 登录成功,保存登录状态...")
// 保存登录状态到本地
const loginState = {
access_token: tokenRes.data.access_token,
refresh_token: tokenRes.data.refresh_token,
token_type: tokenRes.data.token_type,
expires_in: tokenRes.data.expires_in,
user_id: userRes.data.user_id,
email: userRes.data.email,
name: userRes.data.name,
github_username: userRes.data.github_username,
permission: userRes.data.permission,
login_time: new Date().toISOString(),
}
try {
await api.oauthSaveLoginState(loginState)
console.log("[OAuth] 登录状态已保存")
} catch (saveError) {
console.error("[OAuth] 保存登录状态失败:", saveError)
}
console.log("[OAuth] 清理资源...")
await api.oauthStopCallbackServer()
clearExpectedState()
sessionStorage.removeItem("oauth_code_verifier")