• 技术文章 >后端开发 >Python教程

    使用python-ldap实现登录方法

    高洛峰高洛峰2017-03-21 13:31:53原创1357
    这篇文章详解使用python-ldap实现登录方法

    ldap_config = {
        'ldap_path': 'ldap://xx.xx.xx.xx:389',
        'base_dn': 'ou=users,dc=ledo,dc=com',
        'ldap_user': 'uid=reporttest,ou=users,dc=ledo,dc=com',
        'ldap_pass': '111111.0',
        'original_pass': '111111.0'
    }
    
    ldap_message = {
        0: 0, #'ok'
        1: 1, #'用户名或密码错误'
        2: 2, #ldap验证异常'
    }
    
    import ldap
    import base64
    import hashlib
    from config_message import ldap_config, ldap_message
    
    
    class LDAP_API(object):
    
        _ldap_path = ldap_config['ldap_path']
        _base_dn = ldap_config['base_dn']
        _ldap_user = ldap_config['ldap_user']
        _ldap_pass = ldap_config['ldap_pass']
        _original_pass = ldap_config['original_pass']
    
        # 连接ldap服务器
        def __init__(self):
    
            try:
                self.ldapconn = ldap.initialize(self._ldap_path)
                self.ldapconn.protocal_version = ldap.VERSION3
                self.ldapconn.simple_bind(self._ldap_user, self._ldap_pass)
    
            except ldap.LDAPError, e:
                print e
    
        # 验证用户登录
        def ldap_check_login(self, username, password):
    
            obj = self.ldapconn
            searchScope = ldap.SCOPE_SUBTREE
            # searchFilter = '(&(cn='+username+')(userPassword='+password+'))'
            searchFilter = 'uid=' + username
    
            try:
                obj.search(self._base_dn, searchScope, searchFilter, None)  # id--2
                # 将上一步计算的id在下面运算
                result_type, result_data = obj.result(2, 0)
                if result_type != ldap.RES_SEARCH_ENTRY:
                    return {'status': ldap_message[1], 'data': ''}
                dic = result_data[0][1]
                l_realname = dic['sn'][0]
                l_password = dic['userPassword'][0]
                md_password = LDAP_API.hash_md5(password)
                if l_password in (password, md_password):
                    return {'status': ldap_message[0], 'data': l_realname}
                else:
                    return {'status': ldap_message[1], 'data': ''}
            except ldap.LDAPError, e:
                return {'status': ldap_message[2], 'data': ''}
    
        @staticmethod
        def hash_md5(data):
            md = hashlib.md5()
            md.update(str(data))
            a = md.digest()
            b = '{MD5}' + base64.b64encode(a)
            return b

    以上就是使用python-ldap实现登录方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:python
    上一篇:python函数和常用模块的详细介绍 下一篇:python小函数字符类型转换方法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 手把手教你在Python使用plot()函数画图• 详细解析python正则表达式re模块• 一文搞定Python中pip的安装与使用• 一文详解python生成器• Python实战解析selenium的基本元素与键盘鼠标模拟事件
    1/1

    PHP中文网