Django rest framework: Remote user not available in middleware - only in view

Viewed 469

I`m using the django remote user middleware, and an own middleware mysupermiddleware:

MIDDLEWARE = [    
    ...,
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    'my_project.middleware.mysupermiddleware',
]

When a remote user authenticates, it is available in the view. request.user shows the username.

But in my middleware, it is not available

def mysupermiddleware(get_response):

    def middleware(request):
        print (request.user)

request.user returns AnonymousUser

When I print request.user in my view, it returns the remote authenticated user.

When I authenticate with ModelBackend instead RemoteUserBackend, the user is available in middleware and view.

Is this intended? How do I make the remote user available in the middleware? Django version is 3.1.1

EDIT: Found the reason: It is related to rest framework authentication: At this stackoverflow post the user @imposeren states, that

if you are using something other than rest_framework.authentication.SessionAuthentication as an authentication_class, then request.user is set outside of middlewares (somewhere during View.dispatch)

Does somebody have an idea, on how to use user in middleware regardless?

0 Answers
Related