2015-01-21 5 views
5

Ho notato che quando effettuiamo l'accesso in Django non siamo più AnonymousUser (in models.py) ma piuttosto diventano AbstractBaseUser (in models.py).Django. Quando effettuiamo il login come ci spostiamo automaticamente da AnonymousUser a AbstractBaseUser

In che modo il django gestisce questa modifica?

+1

Non è chiaro cosa intendi con 'In che modo django ** gestisce ** questo cambiamento?'. –

+0

Dov'è il codice che fa esplicitamente il passaggio da AnonymousUser a AbstractBaseUser. – Ray

+0

All'interno di django.contrib.auth.models. Controllalo. – Karl

risposta

3

Fondamentalmente è all'interno del AuthenticationMiddleware di django/contrib/auth/middleware.py: request.user = SimpleLazyObject(lambda: get_user(request))

che chiama il get_user dal medesimo modulo:

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

ed infine da get_userdjango/contrib/auth/__ init__.py che restituisce return user or AnonymousUser(). Molto probabilmente ti interessa l'ultimo.

+0

quindi è fondamentalmente memorizzato come cookie? – Ray

+2

Cosa esattamente "memorizzato come cookie"? L'oggetto utente? Potrebbe dipendere dal tuo ['SESSION_ENGINE'] (https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SESSION_ENGINE) usato, ma quello predefinito (' django.contrib.sessions. backends.db') sta memorizzando la sessione e tutti i suoi attributi lato server e conserva solo il ['sessionid'] (https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-name) nei cookie. – jcdenton

Problemi correlati