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?