Django Custom Middleware получает AnonymousUser даже для вошедших в систему пользователей
Я использую пользовательское промежуточное ПО, которое выглядит следующим образом:
class DisallowLoggedInUsers:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
print("in interceptor before response")
print("user: ", request.user)
print("is_authenticated?: ", request.user.is_authenticated)
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
print("in interceptor after response")
print("user: ", request.user)
print("is_authenticated?: ", request.user.is_authenticated)
return response
У меня также есть похожие логи внутри метода get
представления.
Вот вывод журнала:
in interceptor before response
user: AnonymousUser
is_authenticated? False
in view
user: John Doe/john@test.domain
is_authenticated? True
in interceptor after response
user: John Doe/john@test.domain
is_authenticated? True
Вот мой порядок промежуточного оборудования:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'userdata.customInterceptor.DisallowLoggedInUsers',
]
Хотя я поместил свое пользовательское промежуточное ПО намного ниже по порядку (ниже AuthenticationMiddleware
), объект request.user
не устанавливается, пока представление не будет обработано. Я даже пробовал отлавливать запрос в process_view
промежуточного ПО, но все равно получил там AnonymousUser.
Что я делаю не так?
Я на Django 3.1.7
и djangorestframework 3.12.3
.
Примечание: Я проверил этот связанный вопрос, но это не помогло.