mirror of https://github.com/Mai-with-u/MaiBot.git
feat: 更新 token 处理逻辑,清除 Cookie 并要求用户重新登录;保留 first_setup_completed 状态
parent
f8446e6bf7
commit
6680afaa4a
|
|
@ -223,9 +223,9 @@ async def update_token(
|
||||||
# 更新 token
|
# 更新 token
|
||||||
success, message = token_manager.update_token(request.new_token)
|
success, message = token_manager.update_token(request.new_token)
|
||||||
|
|
||||||
# 如果更新成功,更新 Cookie
|
# 如果更新成功,清除 Cookie,要求用户重新登录
|
||||||
if success:
|
if success:
|
||||||
set_auth_cookie(response, request.new_token)
|
clear_auth_cookie(response)
|
||||||
|
|
||||||
return TokenUpdateResponse(success=success, message=message)
|
return TokenUpdateResponse(success=success, message=message)
|
||||||
except HTTPException:
|
except HTTPException:
|
||||||
|
|
@ -272,8 +272,8 @@ async def regenerate_token(
|
||||||
# 重新生成 token
|
# 重新生成 token
|
||||||
new_token = token_manager.regenerate_token()
|
new_token = token_manager.regenerate_token()
|
||||||
|
|
||||||
# 更新 Cookie
|
# 清除 Cookie,要求用户重新登录
|
||||||
set_auth_cookie(response, new_token)
|
clear_auth_cookie(response)
|
||||||
|
|
||||||
return TokenRegenerateResponse(success=True, token=new_token, message="Token 已重新生成")
|
return TokenRegenerateResponse(success=True, token=new_token, message="Token 已重新生成")
|
||||||
except HTTPException:
|
except HTTPException:
|
||||||
|
|
|
||||||
|
|
@ -160,13 +160,29 @@ class TokenManager:
|
||||||
|
|
||||||
def regenerate_token(self) -> str:
|
def regenerate_token(self) -> str:
|
||||||
"""
|
"""
|
||||||
重新生成 token
|
重新生成 token(保留 first_setup_completed 状态)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: 新生成的 token
|
str: 新生成的 token
|
||||||
"""
|
"""
|
||||||
logger.info("正在重新生成 WebUI 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:
|
def _validate_token_format(self, token: str) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue