Access request.session from backend.get_user Access request.session from backend.get_user django django

Access request.session from backend.get_user


You can use the tiny ThreadLocalMiddleware. It makes the request object everywhere available.

from django_tools.middlewares import ThreadLocalrequest = ThreadLocal.get_current_request()# request.session <-- is now available

Do not forget to add the middleware into the MIDDLEWARE_CLASSES tuple of your settings.py:

MIDDLEWARE_CLASSES = (    ...    'django_tools.middlewares.ThreadLocal.ThreadLocalMiddleware',    ...)


The RemoteUserBackend (from django.contrib.auth.backends) uses special middleware, RemoteUserMiddleware, to access request data. Maybe you could do it this way, too.


You can also pass a 'request' parameter to the authenticate function any time you call it:

def authenticate(self, request, **kwargs):    ....