列表加签问题
This commit is contained in:
parent
893a129c59
commit
42f1d7181e
@ -1,18 +1,25 @@
|
||||
import hashlib
|
||||
from copy import deepcopy
|
||||
|
||||
from settings import settings
|
||||
|
||||
__all__ = 'restore_field', 'sort_kv', 'check_sign', 'check_preset'
|
||||
|
||||
|
||||
def restore_field(data: dict) -> dict:
|
||||
def restore_field(data: dict) -> tuple:
|
||||
res = dict()
|
||||
sign_kv = dict()
|
||||
for k, v in data.items():
|
||||
key = settings.FIELD_MAP.get(k) or k
|
||||
if isinstance(v, dict):
|
||||
res[settings.FIELD_MAP.get(k) or k] = restore_field(v)
|
||||
res[key], sign_kv[key] = restore_field(v)
|
||||
else:
|
||||
res[settings.FIELD_MAP.get(k) or k] = v
|
||||
return res
|
||||
res[key] = v
|
||||
if isinstance(v, list):
|
||||
sign_kv[key] = ','.join(map(lambda x: str(x), v))
|
||||
else:
|
||||
sign_kv[key] = v
|
||||
return res, sign_kv
|
||||
|
||||
|
||||
def check_preset(data: dict):
|
||||
|
@ -13,7 +13,7 @@ router = APIRouter()
|
||||
@router.post("/")
|
||||
async def point(request: Request, items: DataModel):
|
||||
try:
|
||||
public_data: dict = restore_field(items.public)
|
||||
public_data, _ = restore_field(items.public)
|
||||
rdb = request.app.state.redis
|
||||
data_factory = request.app.state.data_factory
|
||||
output_factory = request.app.state.output_factory
|
||||
@ -24,10 +24,15 @@ async def point(request: Request, items: DataModel):
|
||||
if not output_factory.name:
|
||||
return {'code': -1, 'msg': '没有匹配到appid'}
|
||||
for item in items.data:
|
||||
data: dict = restore_field(item)
|
||||
sign = data.pop('sign')
|
||||
data, sign_data = restore_field(item)
|
||||
_ = data.pop('sign')
|
||||
properties = data.pop('properties')
|
||||
if not check_sign(sign, settings.SALT.get(appid, ''), data, properties):
|
||||
|
||||
#
|
||||
sign = sign_data.pop('sign')
|
||||
sign_properties = sign_data.pop('properties')
|
||||
|
||||
if not check_sign(sign, settings.SALT.get(appid, ''), sign_data, sign_properties):
|
||||
# continue
|
||||
return {"code": -1, 'msg': '签名错误'}
|
||||
single_data = dict(**public_data, **data, properties=properties)
|
||||
|
Loading…
Reference in New Issue
Block a user