feat: 更新 token 处理逻辑,清除 Cookie 并要求用户重新登录;保留 first_setup_completed 状态

pull/1414/head
墨梓柒 2025-12-03 11:31:13 +08:00
parent f8446e6bf7
commit 6680afaa4a
No known key found for this signature in database
GPG Key ID: 4A65B9DBA35F7635
2 changed files with 22 additions and 6 deletions

View File

@ -223,9 +223,9 @@ async def update_token(
# 更新 token
success, message = token_manager.update_token(request.new_token)
# 如果更新成功,更新 Cookie
# 如果更新成功,清除 Cookie要求用户重新登录
if success:
set_auth_cookie(response, request.new_token)
clear_auth_cookie(response)
return TokenUpdateResponse(success=success, message=message)
except HTTPException:
@ -272,8 +272,8 @@ async def regenerate_token(
# 重新生成 token
new_token = token_manager.regenerate_token()
# 更新 Cookie
set_auth_cookie(response, new_token)
# 清除 Cookie要求用户重新登录
clear_auth_cookie(response)
return TokenRegenerateResponse(success=True, token=new_token, message="Token 已重新生成")
except HTTPException:

View File

@ -160,13 +160,29 @@ class TokenManager:
def regenerate_token(self) -> str:
"""
重新生成 token
重新生成 token保留 first_setup_completed 状态
Returns:
str: 新生成的 token
"""
logger.info("正在重新生成 WebUI Token...")
return self._create_new_token()
# 生成新的 64 位十六进制字符串
new_token = secrets.token_hex(32)
# 加载现有配置,保留 first_setup_completed 状态
config = self._load_config()
old_token = config.get("access_token", "")[:8] if config.get("access_token") else ""
first_setup_completed = config.get("first_setup_completed", True) # 默认为 True表示已完成配置
config["access_token"] = new_token
config["updated_at"] = self._get_current_timestamp()
config["first_setup_completed"] = first_setup_completed # 保留原来的状态
self._save_config(config)
logger.info(f"WebUI Token 已重新生成: {old_token}... -> {new_token[:8]}...")
return new_token
def _validate_token_format(self, token: str) -> bool:
"""