fix: StreamResponse导致ticket不续期,用户操作中被踢出

aiohttp_auth的process_response检查isinstance(response, web.Response),
但ahserver的dspy处理器返回StreamResponse,导致reissue逻辑永远不执行。
在checkAuth middleware中手动触发ticket reissue,确保活跃用户不会被踢出。
This commit is contained in:
yumoqing 2026-06-04 14:38:06 +08:00
parent 39c8cfed2d
commit 0d53dfe00b

View File

@ -176,6 +176,12 @@ class AuthAPI:
t3 = time.time() t3 = time.time()
if t3 - t1 > 1.0: if t3 - t1 > 1.0:
debug(f'timecost=client({ip}) {user} access {path} cost {t3-t1:.3f}, ({t2-t1:.3f})') debug(f'timecost=client({ip}) {user} access {path} cost {t3-t1:.3f}, ({t2-t1:.3f})')
# Reissue ticket if needed (fix for StreamResponse not triggering process_response)
from aiohttp_auth.auth.ticket_auth import _REISSUE_KEY
if _REISSUE_KEY in request:
policy = request.get('aiohttp_auth.policy')
if policy and hasattr(policy, 'remember_ticket'):
await policy.remember_ticket(request, request[_REISSUE_KEY])
return ret return ret
except Exception as e: except Exception as e:
t3 = time.time() t3 = time.time()