[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'
}
View Code

 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)
View Code

 4. 模板

在模板HTML中,则可以通过使用 request.user.is_authenticated 来判断用户是否登录,而通过 request.user.* 来获取存放在里面的用户相关信息。

 

posted @ 2018-06-08 10:50  TimLinux  阅读(326)  评论(0编辑  收藏  举报