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): ....