Как работает аутентификация администратора Django? - PullRequest
1 голос
/ 12 июня 2011

Я искал коды для приложения Admin Django, чтобы определить, как они выполняют полную проверку подлинности пользователя для всех его представлений, не имея представления, как это было сделано (новичок Django здесь).

Например, в sites.py Admin есть представление index, которое вообще не вызывается, если пользователь не аутентифицирован.Я знаю, что происходит некоторая предварительная обработка, которая приводит к тому, что вместо этого вызывается login, но я не могу определить метод, который вызывает login.

Есть ли у кого-нибудь какие-либо идеи о том, какпоток запросов для приложения администратора?

1 Ответ

4 голосов
/ 12 июня 2011

Вот соответствующий файл - django / contrib / admin / sites.py . В частности, обратите внимание на декоратор admin_view в строке 170 (здесь вызывается login) и декоратор wrap в строке 211, последний из которых применяется к каждому представлению urlpatterns в строке 217 (Похоже на то, как работает login_required декоратор из django.contrib.auth).

По сути, каждое представление заключено в декоратор, который проверяет, может ли пользователь получить доступ к сайту администратора (строка 147, request.user.is_active and request.user.is_staff - обратите внимание, что если пользователь не вошел в систему, то request.user является экземпляром AnonymousUser, для которого is_active и is_staff всегда False), и отображает представление login, если нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...