我是Django的新手,被分配实现使用LDAP作为后端的用户认证系统的任务。我猜测文档假设最终开发人员有足够的Django经验来理解和实现这样一个系统。但我不明白如何使用LDAP来实现一个简单的Django应用程序。到目前为止,这是我已经了解到的内容:
仅发布对文件的更改:
settings.py
....
import ldap
from django_auth_ldap.config import LDAPSearch
AUTH_LDAP_SERVER_URI = "ldap://<my url>"
AUTHENTICATION_BACKENDS = ('django_auth_ldap.backend.LDAPBackend')
AUTH_LDAP_CONNECTION_OPTIONS = {
ldap.OPT_REFERRALS: 0
}
MIDDLEWARE_CLASSES = (
....
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
....
)
auth.html
<html>
<head>
<title>Login</title>
</head>
<body>
{{state}}
<form action="" method="post"> {% csrf_token %}
Email address: <input type="text" name="email" value="{{ email }}" />
Password: <input type="password" name="password" value="" />
<input type="submit" value="Log in" />
</form>
</body>
</html>
models.py:
??
views.py:
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate, login
from django.template import RequestContext
def login_user(request):
username = password = ""
state = ""
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
print username, password
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
state = "Valid account"
else:
state = "Inactive account"
return render_to_response('auth_user/auth.html', RequestContext(request, {'state': state, 'username': username}))
我不明白的是什么?1> 我十分确定需要在
views.py
中实现一个函数来获取email
和password
的POST
值并进行验证,例如:[SO]。文档说明要么实现Search/Bind,要么实现Direct Bind。为什么?如果views.py
包含了实际的身份验证代码,那么文档中指定的代码是在做什么呢?2> 如果
views.py
已经执行了实际的身份验证,那么为什么我们还需要文档中指定的那个变量?3> 作者在这个库中做得非常好,但是文档没有提供如何使用LDAP实现整个身份验证系统的简单示例。如果有这样的资源,能否请任何人指出?理解需要添加/修改的文件以实现这样的系统并不容易。