This is an automated email from the ASF dual-hosted git repository.

vincbeck pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-1-test by this push:
     new eb304eae6c3 Cache user object fetched per request in FAB auth manager 
for improved performance. (#60274) (#60834)
eb304eae6c3 is described below

commit eb304eae6c386243c9ac2fd019e4fbcda41c9738
Author: Vincent <[email protected]>
AuthorDate: Tue Jan 20 19:29:55 2026 -0500

    Cache user object fetched per request in FAB auth manager for improved 
performance. (#60274) (#60834)
    
    Co-authored-by: Karthikeyan Singaravelan <[email protected]>
---
 .../airflow/api_fastapi/auth/middlewares/refresh_token.py   | 13 +++++++------
 devel-common/pyproject.toml                                 |  1 +
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git 
a/airflow-core/src/airflow/api_fastapi/auth/middlewares/refresh_token.py 
b/airflow-core/src/airflow/api_fastapi/auth/middlewares/refresh_token.py
index 5705d14ba99..a8386f40138 100644
--- a/airflow-core/src/airflow/api_fastapi/auth/middlewares/refresh_token.py
+++ b/airflow-core/src/airflow/api_fastapi/auth/middlewares/refresh_token.py
@@ -44,9 +44,9 @@ class JWTRefreshMiddleware(BaseHTTPMiddleware):
         current_token = request.cookies.get(COOKIE_NAME_JWT_TOKEN)
         try:
             if current_token:
-                new_user = await self._refresh_user(current_token)
-                if new_user:
-                    request.state.user = new_user
+                new_user, current_user = await 
self._refresh_user(current_token)
+                if user := (new_user or current_user):
+                    request.state.user = user
 
             response = await call_next(request)
 
@@ -67,9 +67,10 @@ class JWTRefreshMiddleware(BaseHTTPMiddleware):
         return response
 
     @staticmethod
-    async def _refresh_user(current_token: str) -> BaseUser | None:
+    async def _refresh_user(current_token: str) -> tuple[BaseUser | None, 
BaseUser | None]:
         try:
             user = await resolve_user_from_token(current_token)
         except HTTPException:
-            return None
-        return get_auth_manager().refresh_user(user=user)
+            return None, None
+
+        return get_auth_manager().refresh_user(user=user), user
diff --git a/devel-common/pyproject.toml b/devel-common/pyproject.toml
index c7939d9a5a4..633824b3b3b 100644
--- a/devel-common/pyproject.toml
+++ b/devel-common/pyproject.toml
@@ -127,6 +127,7 @@ dependencies = [
     "types-setuptools>=69.5.0.20240423",
     "types-tabulate>=0.9.0.20240106",
     "types-toml>=0.10.8.20240310",
+    "types-cachetools>=6.2.0.20251022",
 ]
 "pytest" = [
     # General pytest devel tools

Reply via email to