middleware.py 665 B

123456789101112131415161718192021
  1. from django.contrib import auth
  2. from django.contrib.auth import models as auth_models
  3. from . import backends
  4. class LazyUserMiddleware(object):
  5. def process_request(self, request):
  6. if request.user and not isinstance(request.user, auth_models.AnonymousUser):
  7. assert isinstance(request.user, backends.User)
  8. return None
  9. user = auth.authenticate(request=request)
  10. assert user.is_anonymous()
  11. # We set the auth session key to prevent login to
  12. # cycle the session key or flush the whole session
  13. request.session[auth.SESSION_KEY] = user.id
  14. auth.login(request, user)
  15. return None