Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django. When we login how we are automatically moved from AnonymousUser to AbstractBaseUser

I noticed when we login in Django we are no longer AnonymousUser (in models.py) but rather become AbstractBaseUser (in models.py).

How does django handle this change ?

like image 513
Ray Avatar asked Oct 19 '22 18:10

Ray


1 Answers

Basically it is inside the AuthenticationMiddleware of django/contrib/auth/middleware.py: request.user = SimpleLazyObject(lambda: get_user(request))

which calls the get_user from the same module:

def get_user(request): if not hasattr(request, '_cached_user'): request._cached_user = auth.get_user(request) return request._cached_user

and finally get_user from django/contrib/auth/__init__.py which returns return user or AnonymousUser(). Most probably you are interested in the last one.

like image 183
jcdenton Avatar answered Oct 30 '22 19:10

jcdenton