Django When we log in, how do we automatically switch from AnonymousUser to AbstractBaseUser

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

How does django handle this change?

+5
source share
1 answer

It is mainly located inside AuthenticationMiddleware django / contrib / auth / middleware.py : request.user = SimpleLazyObject(lambda: get_user(request))

which calls 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 likely, you are interested in the latter.

+3
source

Source: https://habr.com/ru/post/1211604/


All Articles