app开发者平台在数字化时代的重要性与发展趋势解析
1130
2022-09-21
Django开发文档-域用户集成登录(django管理系统平台)
项目概述:
一般在企业中,用户以WINDOWS的域用户统一的管理,所以以Django快速开发的应用,不得不集成AD域登录。
网上一般采用django-python3-ldap的库来做集成登录,但是本方案中需要同时使用域用户登录以及站点用户登录的功能。所以我们直接改写django的ModelBackend类以及User类来实现。
实现功能:
User表中增加一个 是否是域用户的字段,如果登录用户是域用户则采用ldap认证,如果不是域用户还采用Django本身的验证。
实现分析:
一、User表中如何增加字段
Django的auth_user表的字段是由django.contrib.auth.models中的User类控制的。
我们需要对User类进行改写来实现增加字段的功能
步骤一
首先我们需要新建一个my_user_auth的app
python manage.py startapp my_user_auth
步骤二
在my_user_auth的models文件中对User进行重新定义。里面增加了一个is_ad_account的字段用来标识是否是域用户。
步骤三
在admin中注册自定义的User类
步骤四
修改setting文件中
1、添加INSTALLED_APPS
2、添加AUTH_USER_MODEL,将系统的User类替换为你写的User类。
AUTH_USER_MODEL = 'my_user_auth.User'
3、运行makemigrations、migrate。
但是首先要确保是你的Django项目还没有运行任何的makemigrations、migrate。那会导致系统的错误。
4、完成后打开数据库,可以看到my_user_auth_user的表数据表。那么恭喜你,自定义User已经成功了。
二、修改控制登录逻辑的ModelBackend类
User类修改完成后,只需要将登录逻辑修改完成,那么我们的功能也就完成了
先来研究下Django中ModelBackend的源码
步骤一
我们在刚刚新建的app【my_user_auth】中创建一个【backends.py】
步骤二
修改setting文件中AUTHENTICATION_BACKENDS将'django.contrib.auth.backends.ModelBackend'修改为'my_user_auth.backends.UserBackend'
AUTHENTICATION_BACKENDS = ['my_user_auth.backends.UserBackend']
步骤三
基于ldap3来ldap认证的代码
步骤四
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~