This commit is contained in:
2025-03-31 10:33:16 +08:00
parent f036fa047c
commit 700243601f
18 changed files with 396 additions and 276 deletions
+11 -6
View File
@@ -3,16 +3,21 @@ import hmac
import json
import time
from typing import Optional
from core.character.adventure import get_adv_info
from core.basic.character import Character
from fastapi import Header, Request
from api.core.exception import ResponseException
class AlterState:
def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int):
self.alter = alter
def __init__(self, value: str, token: str, charcater: Character, equVersion: str,time: int):
self.value = value
try:
self.alter = get_adv_info(value)["class"]
except Exception:
raise ResponseException('无效的职业')
self.token = token
self.origin = alter.split('.')[-1]
self.origin = self.alter.split('.')[-1]
self.character = charcater
self.equVersion = equVersion
self.time = time
@@ -35,15 +40,15 @@ def dict2obj(dictObj):
return d
def createToken(alter: str, equVersion: str, redis = None, expire=86400 / 24 * 2)->str:
def createToken(value: str, equVersion: str, redis = None, expire=86400 / 24 * 2)->str:
ts_str = str(time.time() + expire)
ts_byte = ts_str.encode('utf-8')
sha1_tshex_str = hmac.new(alter.encode('utf-8'), ts_byte, 'sha1').hexdigest()
sha1_tshex_str = hmac.new(value.encode('utf-8'), ts_byte, 'sha1').hexdigest()
token = sha1_tshex_str
token = base64.urlsafe_b64encode(token.encode('utf-8')).decode('utf-8')
# character = createCharacter(alter)
character = {}
redis.set(f'token:{token}', json.dumps(AlterState(alter, token, character, equVersion).to_dict()), int(expire))
redis.set(f'token:{token}', json.dumps(AlterState(value, token, character, equVersion).to_dict()), int(expire))
return token
+1 -1
View File
@@ -20,7 +20,7 @@ def alterToken(alter_token: Optional[str] = Header(None)):
decoded_bytes = base64.b64decode(alter_token)
decoded_str = decoded_bytes.decode('utf-8')
alter = json.loads(decoded_str)
# 时间判断 后面再加
# 6小时过期
if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6:
raise ResponseException('登录过期或无效Token,请刷新后重试')
return AlterState(alter['alter'], alter_token, {}, alter['equVersion'], alter['time'])
+2 -4
View File
@@ -5,6 +5,7 @@ from fastapi import APIRouter,Request
from api.core.Response import Return, response
from api.core.Redis import get_redis_info
from api.dp import RedisDep,AltersDep
from core.character.adventure import get_adv_list
from core.basic.character import createCharacter
router = APIRouter()
@@ -14,10 +15,7 @@ register_gzip_request(router)
@router.get('/adventure')
async def get_adventure_info(request: Request,redis:RedisDep):
def get_adventure():
with open('./dataFiles/adventure-info.json', encoding='utf-8') as fp:
return json.load(fp)
adventure_info = get_redis_info(redis, 'dcalc:adventure', get_adventure)
adventure_info = get_redis_info(redis, 'dcalc:adventure', get_adv_list)
return response(data=adventure_info)