WebUI 后端类型注解补全,使用全 typing 库类型注解
This commit is contained in:
@@ -1,19 +1,19 @@
|
||||
from .security import TokenManager, get_token_manager
|
||||
from .rate_limiter import (
|
||||
RateLimiter,
|
||||
get_rate_limiter,
|
||||
check_auth_rate_limit,
|
||||
check_api_rate_limit,
|
||||
)
|
||||
from .auth import (
|
||||
COOKIE_NAME,
|
||||
COOKIE_MAX_AGE,
|
||||
COOKIE_NAME,
|
||||
clear_auth_cookie,
|
||||
get_current_token,
|
||||
is_token_valid,
|
||||
set_auth_cookie,
|
||||
clear_auth_cookie,
|
||||
verify_auth_token_from_cookie_or_header,
|
||||
)
|
||||
from .rate_limiter import (
|
||||
RateLimiter,
|
||||
check_api_rate_limit,
|
||||
check_auth_rate_limit,
|
||||
get_rate_limiter,
|
||||
)
|
||||
from .security import TokenManager, get_token_manager
|
||||
|
||||
__all__ = [
|
||||
"TokenManager",
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import Cookie, HTTPException, Request, Response
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.config.config import global_config
|
||||
|
||||
from .security import get_token_manager
|
||||
|
||||
logger = get_logger("webui.auth")
|
||||
@@ -54,6 +56,7 @@ def get_current_token(
|
||||
if not is_token_valid(maibot_session):
|
||||
raise HTTPException(status_code=401, detail="Token 无效或已过期")
|
||||
|
||||
assert maibot_session is not None
|
||||
return maibot_session
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ WebUI 请求频率限制模块
|
||||
|
||||
import time
|
||||
from collections import defaultdict
|
||||
from typing import Dict, Tuple, Optional
|
||||
from fastapi import Request, HTTPException
|
||||
from typing import Dict, List, Optional, Tuple
|
||||
|
||||
from fastapi import HTTPException, Request
|
||||
|
||||
from src.common.logger import get_logger
|
||||
|
||||
logger = get_logger("webui.rate_limiter")
|
||||
@@ -21,7 +23,7 @@ class RateLimiter:
|
||||
|
||||
def __init__(self):
|
||||
# 存储格式: {key: [(timestamp, count), ...]}
|
||||
self._requests: Dict[str, list] = defaultdict(list)
|
||||
self._requests: Dict[str, List] = defaultdict(list)
|
||||
# 被封禁的 IP: {ip: unblock_timestamp}
|
||||
self._blocked: Dict[str, float] = {}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ WebUI Token 管理模块
|
||||
import json
|
||||
import secrets
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from typing import Dict, Optional, Tuple
|
||||
|
||||
from src.common.logger import get_logger
|
||||
|
||||
@@ -52,7 +52,7 @@ class TokenManager:
|
||||
logger.error(f"读取 WebUI 配置文件失败: {e},正在重新创建")
|
||||
self._create_new_token()
|
||||
|
||||
def _load_config(self) -> dict:
|
||||
def _load_config(self) -> Dict:
|
||||
"""加载配置文件"""
|
||||
try:
|
||||
with open(self.config_path, "r", encoding="utf-8") as f:
|
||||
@@ -61,7 +61,7 @@ class TokenManager:
|
||||
logger.error(f"加载 WebUI 配置失败: {e}")
|
||||
return {}
|
||||
|
||||
def _save_config(self, config: dict):
|
||||
def _save_config(self, config: Dict):
|
||||
"""保存配置文件"""
|
||||
try:
|
||||
with open(self.config_path, "w", encoding="utf-8") as f:
|
||||
@@ -127,7 +127,7 @@ class TokenManager:
|
||||
|
||||
return is_valid
|
||||
|
||||
def update_token(self, new_token: str) -> tuple[bool, str]:
|
||||
def update_token(self, new_token: str) -> Tuple[bool, str]:
|
||||
"""
|
||||
更新 token
|
||||
|
||||
@@ -208,7 +208,7 @@ class TokenManager:
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def _validate_custom_token(self, token: str) -> tuple[bool, str]:
|
||||
def _validate_custom_token(self, token: str) -> Tuple[bool, str]:
|
||||
"""
|
||||
验证自定义 token 格式
|
||||
|
||||
|
||||
Reference in New Issue
Block a user