mirror of
https://github.com/wangdage12/Snap.Server.git
synced 2026-02-17 08:52:10 +08:00
添加类型注释、修复抽卡id问题
This commit is contained in:
@@ -22,7 +22,7 @@ class ConfigLoader:
|
||||
|
||||
return self._config
|
||||
|
||||
def get(self, key: str, default=None):
|
||||
def get(self, key: str, default=None) -> Any:
|
||||
"""获取配置值,支持点号分隔的嵌套键"""
|
||||
config = self.load_config()
|
||||
keys = key.split('.')
|
||||
|
||||
@@ -26,10 +26,10 @@ def init_mongo(uri: str, test_mode=False):
|
||||
logger.error(f"MongoDB connection failed: {e}")
|
||||
raise
|
||||
|
||||
def generate_code(length=6):
|
||||
def generate_code(length=6) -> str:
|
||||
"""生成数字验证码"""
|
||||
return ''.join(secrets.choice('0123456789') for _ in range(length))
|
||||
|
||||
def generate_numeric_id(length=8):
|
||||
def generate_numeric_id(length=8) -> str:
|
||||
"""生成数字ID"""
|
||||
return ''.join(secrets.choice(string.digits) for _ in range(length))
|
||||
|
||||
@@ -3,14 +3,42 @@ import datetime
|
||||
from flask import current_app
|
||||
from app.config_loader import config_loader
|
||||
|
||||
def create_token(user_id):
|
||||
def create_token(user_id: str) -> str:
|
||||
"""
|
||||
创建JWT访问令牌,有效期由配置文件中的JWT_EXPIRATION_HOURS决定。
|
||||
|
||||
:param user_id: 用户ID
|
||||
:return: JWT 访问令牌
|
||||
"""
|
||||
payload = {
|
||||
"user_id": user_id,
|
||||
"exp": datetime.datetime.utcnow() + datetime.timedelta(hours=config_loader.JWT_EXPIRATION_HOURS)
|
||||
}
|
||||
return jwt.encode(payload, current_app.config["SECRET_KEY"], algorithm=config_loader.JWT_ALGORITHM)
|
||||
|
||||
def verify_token(token):
|
||||
# 创建刷新token,有效期是访问token的两倍
|
||||
def create_refresh_token(user_id: str) -> str:
|
||||
"""
|
||||
创建JWT刷新令牌,有效期为访问令牌的两倍。
|
||||
|
||||
:param user_id: 用户ID
|
||||
:return: JWT 刷新令牌
|
||||
"""
|
||||
payload = {
|
||||
"user_id": user_id,
|
||||
"exp": datetime.datetime.utcnow() + datetime.timedelta(hours=config_loader.JWT_EXPIRATION_HOURS * 2)
|
||||
}
|
||||
return jwt.encode(payload, current_app.config["SECRET_KEY"], algorithm=config_loader.JWT_ALGORITHM)
|
||||
|
||||
def verify_token(token: str)-> str | None:
|
||||
"""
|
||||
验证JWT令牌并返回用户ID,如果无效则返回None。
|
||||
|
||||
:param token: JWT令牌字符串
|
||||
:type token: str
|
||||
:return: 用户ID或None
|
||||
:rtype: str | None
|
||||
"""
|
||||
try:
|
||||
data = jwt.decode(token, current_app.config["SECRET_KEY"], algorithms=[config_loader.JWT_ALGORITHM])
|
||||
return data["user_id"]
|
||||
|
||||
Reference in New Issue
Block a user