patx/micropie
save sessions after middleware that way middleware can mutate the session and it will properly save (mirror this in websocket middle
Commit 221685f · patx · 2025-12-03T20:32:06-05:00
Comments
No comments yet.
Diff
diff --git a/micropie.py b/micropie.py
index b5c8acc..8185acc 100644
--- a/micropie.py
+++ b/micropie.py
@@ -832,14 +832,17 @@ class App:
await self._send_websocket_close(send, 1011, f"Handler error: {str(e)}")
return
- # Save session
- if request.session:
- await self.session_backend.save(ws.session_id, request.session, SESSION_TIMEOUT)
-
# Run WebSocket middleware after_websocket
for mw in self.ws_middlewares:
await mw.after_websocket(request)
+ # Save / clear session after middlewares
+ if request.session:
+ await self.session_backend.save(ws.session_id, request.session, SESSION_TIMEOUT)
+ else:
+ # Treat empty session as logout/delete
+ await self.session_backend.save(ws.session_id, {}, 0)
+
finally:
current_request.reset(token)