600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > django 使用配置文件实现登录方式(人脸 密码 刷卡 指纹等)的自定义选择

django 使用配置文件实现登录方式(人脸 密码 刷卡 指纹等)的自定义选择

时间:2021-08-14 13:13:41

相关推荐

django 使用配置文件实现登录方式(人脸 密码 刷卡 指纹等)的自定义选择

问题引出

网站登录系统,目前开发了人脸识别登录(见我写的博文)、账号密码登录、刷卡登录三个功能,后期可以扩展指纹登录等。

但是对于不同的应用场景需要不同的登录方式,因此针对不同场景定制系统很有必要。比如在A场景下只需要人脸识别登录功能,在B场景下需要刷卡,在C场景下需要刷卡或密码等。

解决方案

本系统使用的是Django开发,MVC架构。

解决思路

在目录下新建一个配置文件,通过修改配置文件的字段属性,改变系统的登录功能。

1 配置文件

在根目录下新建config.ini,写入如下内容:

# LOGIN METHOD SWITCH[Login-Setting]useCamera = FalseusePassword = TrueuseIDCard = TrueuseFingerPrint = False

其中True为开始該功能,False为关闭該功能。

2 登录页面views函数

进入登录页面时,调用login_sys(request)函数,在函数中添加读取配置文件功能,具体代码实现如下:

# 登陆页面def login_sys(request):# 首先判断是否已经登陆if request.user.is_authenticated:return HttpResponseRedirect("/")else:################## 读取配置文件,判断登录方式 ######################import configparsercf = configparser.ConfigParser()cf.read('config.ini')useCamera = cf.get('Login-Setting', 'useCamera')usePassword = cf.get('Login-Setting', 'usePassword')useIDCard = cf.get('Login-Setting', 'useIDCard')useFingerPrint = cf.get('Login-Setting', 'useFingerPrint')##################################################################if useCamera == 'True':# 加载页面时,加载人脸库# message = checkCameras()loadAllAuthFaces()return render(request, 'user_manage/login.html', locals())

其中ini配置文件的读取,用configparser模块,具体使用参考/p/33218385

3 模板html文件

从login_sys(request)执行完之后,返回渲染login.html,在模板中判断是否使用相机、是否使用账号密码、是否使用刷卡等,开启相关的html代码。主要功能实现如下:

<!-- Swiper --><div class="swiper-container"><div class="swiper-wrapper" >{% ifequal useCamera 'True' %}<div class="swiper-slide">{# 相关html代码 #}</div> {% endifequal %}{% ifequal usePassword 'True' %}<div class="swiper-slide">{# 相关html代码 #}</div> {% endifequal %}{% ifequal useIDCard 'True' %}<div class="swiper-slide">{# 相关html代码 #}</div> {% endifequal %}{% ifequal useFingerPrint 'True' %}<div class="swiper-slide">{# 相关html代码 #}</div> {% endifequal %}</div><!-- Add Pagination --><div class="swiper-pagination"></div></div>

实现起来很简单,就是根据views函数返回的变量值是否开启相关代码模块。

4 实现效果

使用了swiper.js,向右滑动切换slide

示例1:全开启

# LOGIN METHOD SWITCH[Login-Setting]useCamera = TrueusePassword = TrueuseIDCard = TrueuseFingerPrint = False # 此功能未开发

示例2:仅刷卡

# LOGIN METHOD SWITCH[Login-Setting]useCamera = FalseusePassword = FalseuseIDCard = TrueuseFingerPrint = False

示例3:账号密码和刷卡

# LOGIN METHOD SWITCH[Login-Setting]useCamera = FalseusePassword = TrueuseIDCard = TrueuseFingerPrint = False

本文由二赛君整理发布,转载请注明出处。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。