Я могу использовать Базовую аутентификацию HTTP с Django?

Для точного соответствия наиболее целесообразно использовать ==. Кроме того, это будет быстрее, чем grep(), и, очевидно, намного проще.

which(string == "apple")
# [1] 1
37
задан system PAUSE 25 June 2009 в 22:53
поделиться

5 ответов

Действительно проверьте ссылки Oli. Вы в основном видите аутентифицируемое имя пользователя, как проверено Основной Аутентификацией HTTP в Django путем рассмотрения запроса. META ['REMOTE_USER'].

Обновление: Протестированный предложенный патч на билет #689 , который является доступен актуальный в репозитории мерзавца telenieko здесь . Это применяется чисто, по крайней мере, на пересмотр 9084 из Django.

Активируют бэкенд аутентификации удаленных пользователей [1 126]

  • добавление 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='^ 

После перезагрузки lighty и сервера Django FCGI, загружая корень сайта теперь просит аутентификацию и принимает testuser учетные данные, и затем производит дамп объекта запроса. В запросе. META эти новые свойства должен присутствовать:

'AUTH_TYPE': 'Basic'
'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6MTIz'
'REMOTE_USER': 'testuser'

/user/ URL может использоваться, чтобы проверить, что Вы действительно зарегистрированы как [1 112]:

<User: testuser>

И /users/ URL теперь перечисляет автоматически добавленный testuser (здесь admin пользователь, которого я создал, когда выполнение syncdb также показывают):

admin,testuser

, Если Вы не хотите исправлять Django, это тривиально, чтобы отсоединиться RemoteUserAuthBackend и RemoteUserAuthMiddleware классы в отдельный модуль и относиться к этому в настройках Django.

, view=lambda request: HttpResponse(repr(request), 'text/plain')), url(regex='^user/

После перезагрузки lighty и сервера Django FCGI, загружая корень сайта теперь просит аутентификацию и принимает testuser учетные данные, и затем производит дамп объекта запроса. В запросе. META эти новые свойства должен присутствовать:

'AUTH_TYPE': 'Basic'
'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6MTIz'
'REMOTE_USER': 'testuser'

/user/ URL может использоваться, чтобы проверить, что Вы действительно зарегистрированы как [1 112]:

<User: testuser>

И /users/ URL теперь перечисляет автоматически добавленный testuser (здесь admin пользователь, которого я создал, когда выполнение syncdb также показывают):

admin,testuser

, Если Вы не хотите исправлять Django, это тривиально, чтобы отсоединиться RemoteUserAuthBackend и RemoteUserAuthMiddleware классы в отдельный модуль и относиться к этому в настройках Django.

, view=lambda request: HttpResponse(repr(request.user), 'text/plain')), url(regex='^users/

После перезагрузки lighty и сервера Django FCGI, загружая корень сайта теперь просит аутентификацию и принимает testuser учетные данные, и затем производит дамп объекта запроса. В запросе. META эти новые свойства должен присутствовать:

'AUTH_TYPE': 'Basic'
'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6MTIz'
'REMOTE_USER': 'testuser'

/user/ URL может использоваться, чтобы проверить, что Вы действительно зарегистрированы как [1 112]:

<User: testuser>

И /users/ URL теперь перечисляет автоматически добавленный testuser (здесь admin пользователь, которого я создал, когда выполнение syncdb также показывают):

admin,testuser

, Если Вы не хотите исправлять Django, это тривиально, чтобы отсоединиться RemoteUserAuthBackend и RemoteUserAuthMiddleware классы в отдельный модуль и относиться к этому в настройках Django.

, view=lambda request: HttpResponse( ','.join(u.username for u in User.objects.all()), 'text/plain')), )

После перезагрузки lighty и сервера Django FCGI, загружая корень сайта теперь просит аутентификацию и принимает testuser учетные данные, и затем производит дамп объекта запроса. В запросе. META эти новые свойства должен присутствовать:

'AUTH_TYPE': 'Basic'
'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6MTIz'
'REMOTE_USER': 'testuser'

/user/ URL может использоваться, чтобы проверить, что Вы действительно зарегистрированы как [1 112]:

<User: testuser>

И /users/ URL теперь перечисляет автоматически добавленный testuser (здесь admin пользователь, которого я создал, когда выполнение syncdb также показывают):

admin,testuser

, Если Вы не хотите исправлять Django, это тривиально, чтобы отсоединиться RemoteUserAuthBackend и RemoteUserAuthMiddleware классы в отдельный модуль и относиться к этому в настройках Django.

10
ответ дан akaihola 27 November 2019 в 04:37
поделиться

Существует httpauth.py. Я - все еще полный newb с Django, таким образом, я понятия не имею, как он вписывается точно, но он должен сделать то, что Вы ищете.

Редактирование: вот более длинный поток ошибки на предмете .

3
ответ дан Oli 27 November 2019 в 04:37
поделиться

Поскольку django может быть выполнен несколькими способами, и только modpython дает Вам тесную интеграцию с Apache, я не полагаю, что существует путь к django для входа, Вы в основном на основной подлинной аутентификации Apache должны действительно быть сделаны на прикладном уровне, поскольку это даст Вам намного больше контроля и будет более простым. Вы действительно не хотите стычку совместного использования userdata между Python и Apache.

, Если Вы не возражаете использовать исправленную версию Django тогда, существует патч в http://www.djangosnippets.org/snippets/56/ , который даст Вам некоторое промежуточное программное обеспечение для поддержки основного автора

, Основной автор действительно довольно прост - если пользователь не зарегистрирован, Вы возвращаетесь, 401 аутентификация потребовала кода статуса. Это запрашивает браузер отображать поле входа в систему. Браузер тогда предоставит имя пользователя и пароль как bas64 закодированные строки. Статья в Википедии http://en.wikipedia.org/wiki/Basic_access_authentication довольно хороша.

, Если патч не делает то, что Вы хотите тогда, Вы могли реализовать основного автора сами вполне быстро.

0
ответ дан Andrew Wilkinson 27 November 2019 в 04:37
поделиться

Это, кажется, задача для пользовательского AuthenticationBackend - видят документация Django относительно этого предмета , djangosnippets.org имеет некоторые реальные примеры такого кода (см. 1 или 2 ) (и это не действительно твердая вещь).

AuthenticationBackend подклассы должны иметь только 2 определенные метода, и их код довольно прост: нужно возвратить Пользовательский объект для идентификатора пользователя, второе должно выполнить проверку учетных данных и возвратить Пользовательский объект, если учетные данные допустимы.

0
ответ дан zgoda 27 November 2019 в 04:37
поделиться

Чтобы просто поддерживать базовую аутентификацию для некоторых запросов (а не работать с веб-сервером - так кто-то может интерпретировать заголовок вашего вопроса), вам нужно будет посмотреть здесь:

http: //www.djangosnippets. org / snippets / 243 /

34
ответ дан 27 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: