使用pip安装双因子认证包django_otppip install django_otp
使用命令创建django工程,并在工程内创建应用django-admin startproject dj2facd dj2fapython mange.py startapp fa
使用集成开发工具pycharm打开工程,在工程的settings.py文件添加otp及插件应用,和中间件代码如下:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_otp', 'django_otp.plugins.otp_totp', 'fa.apps.FaConfig' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django_otp.middleware.OTPMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
生成数据库迁移文件,进行数据库迁移,为确保otp相关表生成,可以单独执行python manage.py migrate otp_totp,或进入数据库查看,创建超级用户,在工程的urls.py文件中添加代码如下:from django_otp.admin import OTPAdminSite # Register your models here. admin.site.__class__ = OTPAdminSite
运行服务器 python manage.py runserver,打开admin页面,效果如下:
已经有了otp token输入框,但是这样还进不去了,所以把前几步添加的代码注释掉,注意settings.py的installed apps不要注释。在命令行pip安装qrcode包,再使用第四步创建的超级用户进入后,在totp device中点击添加
注意用户这里点击放大镜来查找,选择第四步创建的超级用户。点击save,后可以查看二维码,这时候就要用到手机了,使用个app,能free扫描otp二维码码,就相当于手机上保存了动态口令key。退出登录
再回到程序把第六步注释的全部取消注释,再次运行服务器,再登陆时候就可以通过用户名密码加手机的动态口令登录了,大功告成,安全性大幅提升