diff --git a/django/contrib/auth/middleware.py b/django/contrib/auth/middleware.py index 89c7ca6205..5bd176ef69 100644 --- a/django/contrib/auth/middleware.py +++ b/django/contrib/auth/middleware.py @@ -1,5 +1,3 @@ -from functools import partial - from django.contrib import auth from django.contrib.auth import load_backend from django.contrib.auth.backends import RemoteUserBackend @@ -8,6 +6,12 @@ from django.utils.deprecation import MiddlewareMixin from django.utils.functional import SimpleLazyObject +def get_user(request): + if not hasattr(request, '_cached_user'): + request._cached_user = auth.get_user(request) + return request._cached_user + + class AuthenticationMiddleware(MiddlewareMixin): def process_request(self, request): assert hasattr(request, 'session'), ( @@ -16,7 +20,7 @@ class AuthenticationMiddleware(MiddlewareMixin): "'django.contrib.sessions.middleware.SessionMiddleware' before " "'django.contrib.auth.middleware.AuthenticationMiddleware'." ) - request.user = SimpleLazyObject(partial(auth.get_user, request)) + request.user = SimpleLazyObject(lambda: get_user(request)) class RemoteUserMiddleware(MiddlewareMixin):