Oli のリンクをチェックしてください。基本的に、request.META['REMOTE_USER'] を見ると、Django の基本 HTTP 認証によって認証されたユーザー名が確認されます。
更新:チケット#689の提案されたパッチをテストしました。このパッチは、teleneiko の git リポジトリ (こちら) で最新のものを入手できます。少なくとも Django のリビジョン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'
/user/
URL を使用して、実際に次のようにログインしていることを確認できtestuser
ます。
<User: testuser>
/users/
URL には、自動的に追加されたユーザーが一覧表示されます(testuser
ここでは、admin
実行時に作成したユーザーsyncdb
も表示されます)。
admin,testuser
Django にパッチを適用したくない場合は、クラスRemoteUserAuthBackend
とRemoteUserAuthMiddleware
クラスを別のモジュールに切り離して、Django 設定で参照するのは簡単です。