请查看 Oli 的链接。通过查看 request.META['REMOTE_USER'],您基本上可以看到在 Django 中由 Basic HTTP Authentication 验证的经过身份验证的用户名。
更新:测试了票证#689的提议补丁,该补丁可在 Telenieko 的 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 设置中引用它是微不足道的。