Django пользовательское промежуточное ПО request.user всегда AnonymousUser - PullRequest
1 голос
/ 25 марта 2020

Я использую Django 2.2 и DRF

В моем приложении, основанном на свойстве пользователя, мне нужно изменить request.user на другой пользователь.

class CustomMiddleware:
  def __init__(self, get_response):
     self.get_response = get_response

  def __call__(self, request):
     print(request.user)

     response = self.get_response(request)
     return response

print(request.user) всегда дает объект AnonymousUser, но он дает аутентифицированному пользователю в представлениях.

Как я могу получить пользователя в промежуточное ПО?

иерархия промежуточного ПО

MIDDLEWARE = [
    'django_hosts.middleware.HostsRequestMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    'whitenoise.middleware.WhiteNoiseMiddleware',

    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'silk.middleware.SilkyMiddleware',
    'django_hosts.middleware.HostsResponseMiddleware',

    'myapp.middleware.CustomMiddleware',
]
...