Для точного соответствия наиболее целесообразно использовать ==
. Кроме того, это будет быстрее, чем grep()
, и, очевидно, намного проще.
which(string == "apple")
# [1] 1
Действительно проверьте ссылки 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.
Существует httpauth.py. Я - все еще полный newb с Django, таким образом, я понятия не имею, как он вписывается точно, но он должен сделать то, что Вы ищете.
Редактирование: вот более длинный поток ошибки на предмете .
Поскольку 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 довольно хороша.
, Если патч не делает то, что Вы хотите тогда, Вы могли реализовать основного автора сами вполне быстро.
Это, кажется, задача для пользовательского AuthenticationBackend
- видят документация Django относительно этого предмета , djangosnippets.org имеет некоторые реальные примеры такого кода (см. 1 или 2 ) (и это не действительно твердая вещь).
AuthenticationBackend
подклассы должны иметь только 2 определенные метода, и их код довольно прост: нужно возвратить Пользовательский объект для идентификатора пользователя, второе должно выполнить проверку учетных данных и возвратить Пользовательский объект, если учетные данные допустимы.
Чтобы просто поддерживать базовую аутентификацию для некоторых запросов (а не работать с веб-сервером - так кто-то может интерпретировать заголовок вашего вопроса), вам нужно будет посмотреть здесь: