符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
这篇文章将为大家详细讲解有关如何在Django项目中添加ldap登陆认证功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有剑川免费网站建设让你可以放心的选择与我们合作。开发环境
Centos7.2下安装pycharm,并通过X转发至Winodws桌面进行开发
安装pyenv,使用virtualenv 3.6.2 Archives
安装开发过程中需要用到的第三方库,django, mysqlclient等等....这里就不多赘述了
若需参考django开发环境配置和django项目的部署,可以参考我另外一篇文章
python-ldap的安装
python-ldap的安装是大的坑点。
使用pip安装python-ldap时,会报缺少ConfigParser库文件的错误,于是先用pip安装ConfigParser。
但是,python3中ConfigParser改名成了configparser。依旧没法安装,会报No model named ConfigParser。解决方法是到:/root/.pyenv/versions/3.6.2/lib/python3.6目录(这是我的pyenv目录)下,将configparser.py复制一份并改名为ConfigParser.py。
解决了以上两点后,如果直接使用pip install python-ldap。默认的python-ldap版本会报gcc的编译错误,最后指定版本pip install python-ldap==3.0.0b4解决,这才成功安装上python-ldap依赖。
ldap认证实现思路
如果一个项目的用户登陆要通过ldap,那么这个项目一般就是公司内部项目,例如OA系统,运维平台等。那么,我们可以将用户输入账号、密码信息发给ldap服务器进行认证。如果ldap认证通过,我们去查询数据库中是否已存在此账号的用户,若存在,直接跳转登陆即可,若不存在,则先在数据库中创建此用户,随后跳转登陆。如果ldap认证失败,提示错误信息并返回登陆页即可。有了这样的思路,我们的代码就很简单了。
ldap认证代码 auth.py
初始化连接,bind认证账号密码。如果bind成功,就返回True,若bind报错,就返回False。
import ldap def auth_user(user, passwd): conn = ldap.initialize("ldap://IP:PORT") try: conn.simple_bind_s(user, passwd) return 1 except: return 0
登陆的view代码
拿到form中用户输入的账号、密码。调用User对象的login方法,验证成功,就跳转登陆,否则,就提示错误并返回登陆页面。
def login(request): name = request.POST.get('username') password = request.POST.get('userpassword') user = User.login(name, password) if user: ... return redirect('user:users') else: context = {} context['name'] = name context['error'] = '用户名或密码错误' return render(request, 'user/login.html', context)
User对象的Login方法代码
login方法提供了登陆验证功能。调用auth_user函数,传入user,password参数,注意用户名前需要添加本地域名Domain:\。
@classmethod def login(cls, name, password): username = 'Domain\\' + name ret = auth_user(username, password) # password correct if ret: try: user = User.objects.get(name=name) return user except ObjectDoesNotExist as e: user = User() user.name = name user.save() return user # password error else: return None
关于如何在Django项目中添加ldap登陆认证功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。