当前位置:  开发笔记 > 后端 > 正文

我可以在Django中使用HTTP基本身份验证吗?

如何解决《我可以在Django中使用HTTP基本身份验证吗?》经验,为你挑选了3个好方法。

我们有一个在Apache上运行的网站,访问该网站有许多通过HTTP基本身份验证保护的静态页面.

我使用Django内置的用户管理支持,用Django编写了网站的新部分.

我遇到的问题是用户必须通过HTTP Basic身份验证登录一次,然后再使用Django登录表单.这对用户来说既笨拙又令人困惑.

我想知道是否有人找到了让Django使用HTTP Basic身份验证信息登录用户的方法.

我不希望将密码传递给Django,而是如果用户dave已经通过Apache验证,那么它们也应该自动登录到Django dave.

(一种选择是让Apache和Django共享一个用户存储来确保常见的用户名和密码,但这仍然会涉及两个登录提示,这是我试图避免的.)



1> wsorenson..:

为了支持某些请求的基本身份验证(而不是与Web服务器混淆 - 这是某人可能解释您的问题标题的方式),您需要查看此处:

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



2> Traveler..:

这已被添加到Django 1.3版本中.请在此处查看更多当前文档:http: //docs.djangoproject.com/en/dev/howto/auth-remote-user/



3> akaihola..:

查看Oli的链接.您基本上可以通过查看request.META ['REMOTE_USER']来查看Django中基本HTTP身份验证验证的经过身份验证的用户名.

更新:经测试票拟议补丁#689,这是可以达到最新的telenieko的git仓库在这里.它至少适用于Django的9084版.

激活远程用户身份验证后端

添加RemoteUserAuthMiddlewareAuthenticationMiddleware

添加设置 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:


/users/URL现在列出了自动添加testuser(这里admin干什么时,我已经创建的用户syncdb也显示):

admin,testuser

如果您不想修补Django,将它们RemoteUserAuthBackendRemoteUserAuthMiddleware类分离到一个单独的模块并在Django设置中引用它是微不足道的.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有