fix: StreamResponse导致ticket不续期,用户操作中被踢出
aiohttp_auth的process_response检查isinstance(response, web.Response), 但ahserver的dspy处理器返回StreamResponse,导致reissue逻辑永远不执行。 在checkAuth middleware中手动触发ticket reissue,确保活跃用户不会被踢出。
This commit is contained in:
parent
39c8cfed2d
commit
0d53dfe00b
@ -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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user