Token CSRF scade dopo 1 ora: la pagina di misura non salva più e dice «Errore di rete» #12
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: alta
FILE: src/frontend/flask_app/config.py:23 (WTF_CSRF_TIME_LIMIT=3600) ; src/frontend/flask_app/templates/measure/task_execute.html:1206-1228, 1281-1284
COSA: la pagina di misura vive ore senza ricaricare. Dopo 1 ora ogni POST riceve 400 in HTML,
response.json()lancia, l'operatore vede «Errore di rete. Riprovare.». Nessun handler perCSRFError.INPUT: postazione ferma sullo stesso task oltre 60 minuti, poi lettura dal calibro: misura non salvata.
VERIFICATO: test client con TIME_LIMIT=1 s →
400 text/html ... The CSRF token has expired.ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:22:25Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto B1+B2MODIFICHE lato server (B2): src/frontend/flask_app/config.py —
WTF_CSRF_TIME_LIMIT = None(il token vale quanto la sessione). src/frontend/flask_app/app.py —@app.errorhandler(CSRFError): per richieste JSON/fetch (Accept o Content-Type application/json, o X-Requested-With) risponde 400 JSON{"error": true, "csrf_expired": true, "detail": ...}; per le altre, flash + redirect alla pagina corrente/login.MODIFICHE lato pagina (B1): src/frontend/flask_app/templates/measure/task_execute.html — nei punti in cui si fa
response.json()dopo una fetch (salvataggio misura ~1206-1228, postProduction ~1281): se la risposta non è JSON o portacsrf_expired/session_expiredmostra «Sessione scaduta: ricaricare la pagina» (stringa i18n_()), NON «Errore di rete»; la lettura non salvata resta sul display.TEST (B2): token CSRF scaduto/assente su POST JSON → 400 con
csrf_expired.Soluzione
ESITO: fatto
COSA:
WTF_CSRF_TIME_LIMIT=None(token valido quanto la sessione);errorhandler(CSRFError)risponde 400 JSONcsrf_expiredalle fetch; task_execute.html mostra «Sessione scaduta: ricaricare la pagina» invece di «Errore di rete» e lascia la lettura sul display.COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1): 31fa78b;925ed19PROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).