亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn)

瀏覽:4日期:2024-09-24 18:08:57

Django自帶的Admin很好用,但是放到生產(chǎn)環(huán)境總還差了點什么= =

看看admin的介紹:

Django奉行Python的內(nèi)置電池哲學(xué)。它自帶了一系列在Web開發(fā)中用于解決常見問題或需求的額外的、可選工具。這些工具和插件,例如django.contrib.redirects都必須在settings中的INSTALLED_APPS處進(jìn)行注冊,有的還需要執(zhí)行manage.py migrate命令,在數(shù)據(jù)庫中創(chuàng)建一些數(shù)據(jù)表。

Admin站點是Django有別于其它Web框架最重要的一點,并且非常受歡迎,簡直是出門旅游xxxx的必備。不管你是寫個小demo還是做個大項目都用得上。admin(下文中將Admin管理后臺簡稱為admin)通過讀取你的模型數(shù)據(jù),快速構(gòu)造出一個可以對實際數(shù)據(jù)進(jìn)行管理的Web站點,常用于開發(fā)測試,簡單管理等場合,適用于部門內(nèi)部為工作方便的場合, 但不建議在生產(chǎn)環(huán)境中使用。

為什么不建議在生產(chǎn)環(huán)境使用呢,因為Admin缺了驗證碼和登錄限制這種安全方面的功能!等會被人隨便暴力破解就進(jìn)后臺了,那我們的系統(tǒng)安全性還怎么保障?

但是別急,我已經(jīng)通過魔改的方式實現(xiàn)了驗證碼和登錄限制了,現(xiàn)在可以愉快使用admin系統(tǒng)了。

先看看效果

給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn)

效果還是nice的,登錄嘗試次數(shù)可以自己設(shè)定,我這里就不演示了,輸那么多次錯誤密碼太麻煩了。

驗證碼

驗證碼我是用了 django-simple-captcha 這個庫,配合 multi_captcha_admin 來生成驗證碼form,非常方便。

首先是pip安裝這兩個庫,大家都懂的,不再贅述。

配置一下 settings.py :

INSTALLED_APPS = [ ’multi_captcha_admin’,] # 驗證碼配置MULTI_CAPTCHA_ADMIN = { ’engine’: ’simple-captcha’,}

配置 urls.py :

# 添加這一項path(’captcha/’, include(’captcha.urls’)),

到了這步就好啦,如果用的是Django官方的Admin就直接能顯示出登錄的驗證碼了,不過我用的是第三方的Admin,所以需要手動添加form。

方法很簡單,找到 login.html ,在登錄的表單里面添加這一項就好了。

{{ form.captcha }}

默認(rèn)生成的驗證碼和輸入框是原生樣式,比較丑~ 我們可以優(yōu)化一下。我是用js把生成的圖片和驗證碼輸入框替換成elementUI的樣式,有需要的小伙伴可以參考一下。

var row = document.querySelector(’#captcha_group’); var captcha_img = document.querySelector(’img.captcha’);var col_8 = document.createElement(’el-col’);col_8.setAttribute(’:span’, ’8’);col_8.appendChild(captcha_img); var captcha_input = document.querySelector(’#id_captcha_1’);var el_input = document.createElement(’el-input’);var col_16 = document.createElement(’el-col’);col_16.setAttribute(’:span’, ’16’);el_input.setAttribute(’name’, captcha_input.getAttribute(’name’));el_input.setAttribute(’v-model’, ’captcha’);el_input.setAttribute(’required’, ’required’);el_input.setAttribute(’placeholder’, ’請輸入驗證碼’);col_16.appendChild(el_input); captcha_input.parentNode.removeChild(captcha_input); row.appendChild(col_8);row.appendChild(col_16);

登錄限流

這個也不復(fù)雜,不過我一開始做還是花了比較長時間,查不到什么有用的資料,后面我去讀了Django Admin的代碼,一下就想出解決方法了哈哈~

通過admin的代碼,我發(fā)現(xiàn)處理登錄是 admin.site.login(request, extra_context) 這個方法,那問題就變得很簡單了,給他加一個裝飾器就好了,不過我們不能去修改框架的代碼,所以自己寫一個新的view,如下:

# 覆蓋默認(rèn)的admin登錄方法實現(xiàn)登錄限流@ratelimit(key=’ip’, rate=’5/m’, block=True)def extend_admin_login(request, extra_context=None): return admin.site.login(request, extra_context)

然后在 urls.py 里配置一下,記得要放在 admin 的前面:

urlpatterns = [ path(’admin/login/’, views.extend_admin_login), path(’admin/’, admin.site.urls),]

這樣就可以實現(xiàn)限流了,這里要介紹一下 ratelimit 這個裝飾器,這是django-ratelimit這個包提供的,為了使用這個包,需要配置redis緩存,附上配置代碼:

# 配置redis緩存CACHES = { ’default’: { ’BACKEND’: ’django_redis.cache.RedisCache’, # 緩存后端 Redis # 連接Redis數(shù)據(jù)庫(服務(wù)器地址) # 一主帶多從(可以配置個Redis,寫走第一臺,讀走其他的機(jī)器) ’LOCATION’: [ ’redis://localhost:6379/0’, ], ’KEY_PREFIX’: ’milky’, # 項目名當(dāng)做文件前綴 ’OPTIONS’: { ’CLIENT_CLASS’: ’django_redis.client.DefaultClient’, # 連接選項(默認(rèn),不改) ’CONNECTION_POOL_KWARGS’: {’max_connections’: 512, # 連接池的連接(最大連接) }, } }}

@ratelimit(key=’ip’, rate=’5/m’, block=True) , key=ip 表示根據(jù)ip來區(qū)分, rate=5/m 表示一分鐘最多請求這個接口5次, block=true 表示超過這個限制就直接攔截,如果沒有設(shè)置block參數(shù)的話,超過限制也不會攔截,但是可以在ratelimit計數(shù)器里面看到請求的次數(shù)。

更多用法可以看官方文檔: https://django-ratelimit.readthedocs.io/en/stable/index.html

參考資料

https://github.com/a-roomana/django-multi-captcha-admin

https://django-simple-captcha.readthedocs.io/en/latest/advanced.html#rendering

到此這篇關(guān)于給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn)的文章就介紹到這了,更多相關(guān)Django Admin驗證碼和登錄限制內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 日韩欧美中文字幕在线视频 | 欧美草逼网 | 九九热这里只有 | 搜索黄色毛片 | 女人被狂躁的视频免费一一 | 欧美日韩高清观看一区二区 | 国产精品tv | 日韩视频中文字幕 | 国产换爱交换乱理伦片 | 亚洲短视频在线观看 | 日本黄色片网站 | 亚洲精品入口一区二区乱成人 | 亚洲成人播放 | 久久免费福利 | www.尤物视频 | 久久久久女人精品毛片 | 亚洲欧美另类精品久久久 | 99久久精品费精品国产一区二区 | 成年网站视频在线观看 | 日韩一级片网址 | 视频二区在线 | 一级做a爱过程免费视频日本 | 一区二区三区四区在线不卡高清 | 国产做爰免费视频观看 | 成人性欧美丨区二区三区 | 国产精品东北一极毛片 | 亚洲一区二区三区在线网站 | 日韩永久在线观看免费视频 | 国产91长腿美女在线观看 | 黄色免费影视 | 国产尤物精品视频 | 色琪琪综合网站 | www.av在线免费观看 | 亚洲电影一区二区三区 | 国产精品不卡视频 | 成人黄色在线观看视频 | 黄色毛片免费进入 | 日本一级毛片视频网站 | 中国黄色一级片 | 亚洲一级黄色大片 | 在线碰 |