Проверьте ссылки Оли. Вы в основном видите аутентифицированное имя пользователя, проверенное базовой HTTP-аутентификацией в Django, посмотрев на request.META ['REMOTE_USER'].
Обновление: Протестировано предлагаемое исправление для билета # 689 , которое доступно в настоящее время в git-хранилище telenieko здесь . Это относится чисто по крайней мере на ревизии 9084 Джанго.
Активировать бэкэнд аутентификации удаленного пользователя с помощью
- добавление
RemoteUserAuthMiddleware
после AuthenticationMiddleware
- добавление настройки
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.RemoteUserAuthBackend',)
Если вы используете lighttpd и FastCGI, как я, активируйте mod_auth, создайте учетные данные для тестового пользователя (я назвал его testuser
и задайте 123
в качестве пароля) и сконфигурируйте сайт Django так, чтобы он требовал базовой аутентификации.
Следующее urls.py
можно использовать для проверки настройки:
from django.conf.urls.defaults import *
from django.http import HttpResponse
from django.contrib.auth.models import User
urlpatterns = patterns('',
url(regex='^$',
view=lambda request: HttpResponse(repr(request), 'text/plain')),
url(regex='^user/$',
view=lambda request: HttpResponse(repr(request.user), 'text/plain')),
url(regex='^users/$',
view=lambda request: HttpResponse(
','.join(u.username for u in User.objects.all()),
'text/plain')),
)
После перезагрузки lighty и сервера Django FCGI загрузка корня сайта теперь запрашивает аутентификацию и принимает учетные данные testuser
, а затем выводит дамп объекта запроса. В request.META должны присутствовать эти новые свойства:
'AUTH_TYPE': 'Basic'
'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6MTIz'
'REMOTE_USER': 'testuser'
URL-адрес /user/
может использоваться для проверки того, что вы действительно вошли как testuser
:
<User: testuser>
И в URL /users/
теперь перечисляется автоматически добавленный testuser
(здесь также отображается admin
пользователь, которого я создал при выполнении syncdb
):
admin,testuser
Если вы не хотите вносить исправления в Django, тривиально отключить классы RemoteUserAuthBackend
и RemoteUserAuthMiddleware
в отдельный модуль и обратиться к этому в настройках Django.