为了一定程度的降低被暴力破解的概率,增加一些服务的安全性,我们往往会给我们的服务增加验证码。
今天给大家分享如何快速给django admin后台添加验证码的方式方法。
作为一名偷懒的Python开发者,想到怎么简单怎么来。
所以原则就是「不改动代码数据结构,通过第三方包的方式配置生成验证码」
本着这个原则就有了下面的两种方式:
使用google recaptcha2
第一种方式就是使用 google recaptcha2
-
去 reCAPTCHA: Easy on Humans, Hard on Bots页面添加域名
-
到达如下的注册页面
-
-
添加完后,获取对应的public_key和private_key
-
安装配置如下
pip install django-captcha-admin INSTALLED_APPS = ( ... 'captcha_admin', 'captcha', ) RECAPTCHA_PUBLIC_KEY = 'your-public-key' RECAPTCHA_PRIVATE_KEY = 'your-private-key' \# If I'm not a Robot is required add: NOCAPTCHA = True from captcha_admin import admin urlpatterns = patterns( ... url(r'^admin/', include(admin.site.urls)), # and this... ... )
到此配置就完成了,然后就有了下面的效果
使用google captcha的安全性和可用性都不错,但是由于国内原因,需要你的服务器和使用你后台客户需要梯子翻*墙,所以下面有第二种方案。
使用django-simple-captcha
这种方式主要结合了 django-multi-captcha-admin 包进行配置
配置如下
pip install django-multi-captcha-admin django-simple-captcha INSTALLED_APPS = ( ... 'multi_captcha_admin', 'django.contrib.admin', ) MULTI_CAPTCHA_ADMIN = { 'engine': 'simple-captcha', # 选择recaptcha2 } urlpatterns = patterns( ... url(r'^captcha/', include('captcha.urls')), # and this... ... ) python manage.py migrate
ps: django-simple-captcha 要求Django > 1.8
最后效果图如下:
其实这django-multi-captcha-admin 这个包直接可以添加方式一的google的验证码方式了,这里面我就没有尝试了。大家有兴趣可以去试试。