成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

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

Django自帶的Admin很好用,但是放到生產環境總還差了點什么= =

看看admin的介紹:

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

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

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

但是別急,我已經通過魔改的方式實現了驗證碼和登錄限制了,現在可以愉快使用admin系統了。

先看看效果

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

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

驗證碼

驗證碼我是用了 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 }}

默認生成的驗證碼和輸入框是原生樣式,比較丑~ 我們可以優化一下。我是用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);

登錄限流

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

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

# 覆蓋默認的admin登錄方法實現登錄限流@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),]

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

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

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

更多用法可以看官方文檔: 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

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

標簽: Django
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
av中文字幕一区| 极品美女销魂一区二区三区免费| 亚洲成人免费影院| 99久久精品国产精品久久| 欧美日韩精品一区二区三区蜜桃| 亚洲福利一区二区三区| 激情综合电影网| 久久久精品国产99久久精品芒果| 国产精品99久| 91精品国产入口| 免费观看久久久4p| 色哟哟亚洲精品| 亚洲超碰97人人做人人爱| 亚洲欧美日韩另类精品一区二区三区 | 欧美日韩中文字幕精品| 日本美女一区二区三区| 久久午夜激情| 日韩精品一二三| 老**午夜毛片一区二区三区| 日韩av电影天堂| 色婷婷综合久久久久中文| 五月天久久比比资源色| 国产精品久久久一区二区三区| |精品福利一区二区三区| 欧美日韩天天操| 国产欧美久久久精品影院| 欧美日韩综合精品| 中文字幕第一区第二区| 欧美日韩国产免费观看| 国产精品久久毛片av大全日韩| 欧美激情视频一区二区三区在线播放| 国产女主播在线一区二区| 欧美精品成人| 亚洲私人影院在线观看| 亚洲国产欧美另类丝袜| 99综合精品| 亚洲在线视频免费观看| 成人在线一区二区三区| 国产亚洲一二三区| 成熟亚洲日本毛茸茸凸凹| 一本久久a久久精品亚洲| 欧美aaa在线| 欧美一级xxx| av一本久道久久综合久久鬼色| 久久久综合九色合综国产精品| 欧美 日韩 国产 一区| 国产成人在线免费观看| 日韩天堂在线观看| 91欧美一区二区| 欧美色图免费看| 国产河南妇女毛片精品久久久| 欧美精品一区二区久久婷婷| 成人av中文字幕| 国产精品伦理在线| 亚洲欧美99| 蜜桃在线一区二区三区| 在线电影欧美成精品| 成人激情动漫在线观看| 日本一区二区视频在线观看| 亚洲一二三区精品| 亚洲 欧美综合在线网络| 欧美日韩久久一区| 91在线免费视频观看| 亚洲女人的天堂| 欧洲生活片亚洲生活在线观看| 国产精品18久久久久久久网站| 精品sm在线观看| 在线播放豆国产99亚洲| 日日夜夜一区二区| 91精品国产欧美一区二区| 99久久免费视频.com| 国产精品高潮呻吟久久| 久久久久久亚洲精品不卡4k岛国| 精品一区二区三区久久| 久久久久久久综合色一本| 国产视频精品网| 国产美女精品在线| 国产精品久久久久久一区二区三区| 久久aⅴ乱码一区二区三区| 国产一区二区三区免费在线观看| 久久午夜免费电影| 亚洲一卡久久| 国产一区欧美一区| 国产精品麻豆视频| 欧美性视频一区二区三区| 成人午夜在线免费| 日韩毛片高清在线播放| 欧美午夜影院一区| 午夜日韩av| 免费成人av在线| 久久影视一区二区| 99热这里只有精品8| 国产精品自在欧美一区| 亚洲天堂av一区| 欧美日韩国产一级片| 欧美日韩高清在线一区| 青青草视频一区| 久久免费电影网| 裸体一区二区| 99久久久无码国产精品| 五月天欧美精品| 国产午夜精品福利| 在线一区二区三区四区五区 | 亚洲激情第一区| 日韩午夜av电影| 美女被久久久| 欧美99在线视频观看| 蜜臀精品久久久久久蜜臀| 日本一区二区三区四区| 在线观看精品一区| 亚洲国产午夜| 成人免费视频caoporn| 午夜精品久久久久久久久久久| 久久久久国产精品免费免费搜索| 色天使色偷偷av一区二区| 欧美午夜不卡| 国产激情偷乱视频一区二区三区| 亚洲综合男人的天堂| 久久人人97超碰com| 欧美日韩激情一区二区三区| 国产欧美日本在线| 91欧美激情一区二区三区成人| 狠狠狠色丁香婷婷综合激情| 亚洲午夜电影在线| 国产亚洲人成网站| 91精品国产综合久久久久| 久久精品女人| 亚洲精品日韩精品| 91一区二区在线| 久久99精品久久久久久动态图| 中文字幕字幕中文在线中不卡视频| 日韩视频一区二区| 久久综合久久久| 亚洲国产精品一区| 99视频超级精品| 久久91精品久久久久久秒播 | 成人国产精品免费| 美脚の诱脚舐め脚责91| 亚洲欧美一区二区三区极速播放 | 色婷婷av一区二区三区gif| 亚洲精品一区二区三区av| eeuss鲁一区二区三区| 久久99这里只有精品| 亚洲一区自拍偷拍| 国产精品国产三级国产三级人妇| 精品国产一区二区三区不卡 | 成人高清在线视频| 国产美女一区二区三区| 美女一区二区在线观看| 亚洲成人免费电影| 亚洲天堂网中文字| 国产精品视频免费看| 日韩一区二区视频| 在线观看区一区二| 久久综合久久久| 亚洲在线免费| 在线亚洲成人| 在线日韩av| 韩国一区二区三区在线观看| 91亚洲精品乱码久久久久久蜜桃| 国产一区二区三区在线观看免费视频 | 欧美人妇做爰xxxⅹ性高电影 | 欧美二区在线| 91免费视频大全| 国产麻豆午夜三级精品| 日韩精品电影在线| 五月天精品一区二区三区| 亚洲精品自拍动漫在线| 中文字幕一区二区三区在线不卡| 久久综合色播五月| 精品国精品国产尤物美女| 日韩色视频在线观看| 欧美日韩国产一级| 欧美精品在欧美一区二区少妇 | 中文字幕在线播放不卡一区| 久久精品水蜜桃av综合天堂| 日韩欧美aaaaaa| 日韩一区二区三区av| 欧美一区二区网站| 555www色欧美视频| 在线播放/欧美激情| 在线不卡一区二区| 欧美一区二区三区视频免费| 在线播放中文一区| 日韩一本二本av| 精品国内片67194| 精品国产乱码久久久久久图片| 欧美刺激脚交jootjob| 欧美mv日韩mv国产网站| 久久―日本道色综合久久| 国产日韩高清在线| 久久婷婷国产综合精品青草| 国产日韩欧美精品一区| 国产亚洲一二三区| 国产精品国产三级国产aⅴ原创 | 7777精品伊人久久久大香线蕉超级流畅 | 99精品国产热久久91蜜凸| 欧美jjzz| 99香蕉国产精品偷在线观看 | 在线一区二区三区|