2015-01-21 12 views
5

Tôi nhận thấy khi chúng ta đăng nhập vào Django, chúng ta không còn là AnonymousUser (trong models.py) mà là AbstractBaseUser (trong models.py).Django. Khi chúng ta đăng nhập cách chúng ta được tự động chuyển từ AnonymousUser sang AbstractBaseUser

django xử lý thay đổi này như thế nào?

+1

Không rõ ý của bạn là gì 'Django ** xử lý ** thay đổi này như thế nào?'. –

+0

Mã ở đâu rõ ràng chuyển từ AnonymousUser sang AbstractBaseUser. – Ray

+0

Bên trong django.contrib.auth.models của nó. Kiểm tra nó. – Karl

Trả lời

3

Về cơ bản nó là bên trong AuthenticationMiddleware của django/contrib/auth/middleware.py: request.user = SimpleLazyObject(lambda: get_user(request))

trong đó kêu gọi các get_user so với cùng mô-đun:

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

và cuối cùng get_user từ django/contrib/auth/__ init__.py trả về return user or AnonymousUser(). Có thể bạn quan tâm đến người cuối cùng.

+0

để cơ bản được lưu trữ dưới dạng cookie? – Ray

+2

Chính xác "lưu trữ dưới dạng cookie" là gì? Đối tượng người dùng? Nó có thể phụ thuộc vào ['SESSION_ENGINE'] của bạn (https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SESSION_ENGINE) được sử dụng, nhưng mặc định (' django.contrib.sessions. backends.db') đang lưu trữ session và tất cả các thuộc tính của nó phía máy chủ và chỉ giữ ['sessionid'] (https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-name) trong cookie. – jcdenton

Các vấn đề liên quan