[TimLinux] python-ldap 介绍
1. 接口
ldap: LDAP库接口
ldap.asyncsearch: 大量搜索结果数据采用流处理
ldap.controls: LDAPv3上层访问扩展控制
ldap.dn: LDAP distinguished 名称处理
ldap.extop: LDAPv3上层访问扩展操作
ldap.filter: LDAP过滤器处理
ldap.modlist: 生成修改列表
ldap.resiter: 大量搜索结果数据采用流处理生成器
ldap.schema: LDAPv3 schema处理
ldap.syncrepl: syncrepl消费者实现
ldap.sasl: SASL认证方法
ldif: LDIF 解析器和生成器
ldapurl: LDAP URL 处理
sldaptest: OpenLDAP的sldap服务器的批量测试实例
2. django-auth-ldap配置
settings.py文件中的配置:
import ldap from django_auth_ldap.config import LDAPSearch AUTHENTICATION_BACKENDS = [ 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend' ] AUTH_LDAP_SERVER_URI = 'ldap://<ip>:389' AUTH_LDAP_BIND_DN = "cn=<ldapuser>,OU=...,OU=...,DC=company,DC=com" AUTH_LDAP_BIND_PASSWORD = "<ldappassword>" AUTH_LDAP_USER_SEARCH = LDAPSearch( 'OU=xxx,OU=XXX,DC=company,DC=com', ldap.SCOPE_SUBTREE, '(&(objectclass=Person)(sAMAccountName=%(user)s))' ) AUTH_LDAP_USER_ATTR_MAP = { 'email': 'mailNickname', 'first_name': 'department', 'last_name': 'cn' }
3. 视图
视图中的代码非常的简单,主要就是调用 authenticate 和 login 方法,代码示例如下:
from django.contrib.auth import authenticate, login, logout def login_view(request): username = request.POST.get('username') password = request.POST.get('password') user = authenticate(username=username, password=password) if user is not None: login(request, user) else: print("login fail") def logout_view(request): logout(request)
4. 模板
在模板HTML中,则可以通过使用 request.user.is_authenticated 来判断用户是否登录,而通过 request.user.* 来获取存放在里面的用户相关信息。