私は 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:
??
ビュー.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
を取得して検証するには、関数を実装する必要があると確信しています。たとえば、 [SO]です。ドキュメントでは、検索/バインドまたは直接バインドのいずれかを実装するように指定されています。なんで?認証コードの実際の部分が含まれる場合、ドキュメントで指定されているコードは何を行っていますか? POST
email
password
views.py
2>views.py
が実際の認証を実行する場合、なぜドキュメントで指定された変数が必要なのですか?
3> 作成者はライブラリで素晴らしい仕事をしましたが、ドキュメントには、LDAP を使用して認証システム全体を実装する方法の単純なベアボーンの例が提供されていません。そのようなリソースが存在する場合、誰でも指摘できますか? このようなシステムを実装するために追加/変更する必要があるファイルを理解するのは簡単ではありません。