Python django使用apache ldap后端身份验证,登录用户名和ldap组&;基于组隐藏详细信息(mod_ldap)

Python django使用apache ldap后端身份验证,登录用户名和ldap组&;基于组隐藏详细信息(mod_ldap),python,django,apache,Python,Django,Apache,我使用Django与Apache和LDAP后端身份验证,我的http配置如下: LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so # <Location /> AuthName "Please enter your domain credentials." AuthBasicProvider ldap AuthType ba

我使用Django与Apache和LDAP后端身份验证,我的http配置如下:

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#
<Location />
  AuthName "Please enter your domain credentials."
  AuthBasicProvider ldap
  AuthType basic
  AuthLDAPUrl "ldap://example.com:389/DC=example,DC=com?sAMAccountName"
  AuthLDAPBindDN "CN=serv,OU=Service Accounts,DC=example,DC=com"
  AuthLDAPBindPassword XXXX
  AuthLDAPBindAuthoritative off
  LDAPReferrals off
  Require valid-user
</Location>
这给了我一个请求未定义的消息(我在顶部有导入请求)

这给了我TypeError:“函数”对象没有属性“getitem

有人知道我需要用什么吗

如果用户不在正确的ldap组中,我还需要对他们隐藏某些URL,因此还需要从会话中获取用户广告组


谢谢,每个请求的WSGI环境键/值都可以在Django
request.META
对象中找到。因此,请尝试:

request.META['REMOTE_USER']
Apache传递给您的内容是否符合您期望的格式是另一个问题。您可以在传递的其他变量中找到所需的内容。见:


根据文档主题,为了使用Apache身份验证,您必须包括一个特定的中间件:

配置 首先,必须将
django.contrib.auth.middleware.RemoteUserMiddleware
添加到
middleware\u类
设置的
django.contrib.auth.middleware.AuthenticationMiddleware

接下来,必须在
AUTHENTICATION\u BACKENDS
设置中将
modelbend
替换为
RemoteUserBackend

如果您已经这样做了,但没有成功,并且您需要更细粒度的访问控制,那么我只需要编写一个自定义的身份验证后端,并完全抛弃mod_ldap。关键是在编写后端之前让python ldap模块工作

要访问
request.user
,您必须在Django视图中。例如:

def index(request):
    user = request.user
    return render(request, 'template.html', {"user": user})
template.html
文件中:

<h1>Hi, {{ user }}</h1>
Hi,{{user}

我复制了这个片段我没有错误,但我不知道如何使用它?如何登录或设置需要登录的页面?您必须在
设置中注册您的后端。身份验证\u BACKENDS
,查看有关编写自定义后端的链接,只需假装是您自己编写的,然后按照此处的其余说明进行操作。我在此处为其创建了一个单独的问题我已配置了设置。。。谢谢你的两个链接都断了。
MIDDLEWARE_CLASSES = [
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
]
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.RemoteUserBackend',
]
def index(request):
    user = request.user
    return render(request, 'template.html', {"user": user})
<h1>Hi, {{ user }}</h1>