Django开发文档-域用户集成登录(django管理系统平台)

网友投稿 1056 2022-09-21

Django开发文档-域用户集成登录(django管理系统平台)

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小时内删除侵权内容。

上一篇:糕点小程序开发(怎样做小年糕小程序)
下一篇:Autotools发展史
相关文章

 发表评论

暂时没有评论,来抢沙发吧~