亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Django自定義用戶登錄認證示例代碼

 更新時間:2019年06月30日 17:08:09   作者:Conamore  
這篇文章主要給大家介紹了關于Django自定義用戶登錄認證的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Django具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

有時候 Django 自帶的用戶登錄認證不能滿足我們的需求,比如我不想要用戶名+密碼登錄,我想手機號+驗證碼登錄,這樣就需要我們?nèi)バ薷?Django 自帶的認證了。

Django 默認使用用戶認證的是ModelBackend,這個類也就是我們要下手的地方,ModelBackend里面有一個authenticate的方法,這個方法就是登錄時對用戶認證的方法。我們要改的就是這個方法。

先看看原碼理解一下認證邏輯:

第15-16行先獲取認證用的用戶名字段,默認是username,如果在Usermodel里面重新定義了USERNAME_FIELD,如改為USERNAME_FIELD = 'mobile',那么現(xiàn)在就是以手機號來登錄了。

第18-22行就是根據(jù) username 去獲取 user 對象,如果沒有這個 user 就做一次密碼 hasher (不太理解這里的作用,不過不影響修改),然后就退出方法了。

第24-25行就是獲取到用戶后,驗證用戶傳過來的密碼跟數(shù)據(jù)庫里的是否一致并且該用戶是否有登錄權限,驗證都通過后就把 user 返回去,否則退出返回,不返回任何東西。

明白了認證的邏輯,就開始修改了,首先新建一個類,繼承ModelBackend,然后重寫authenticate方法,比如上面提到的改為手機號+驗證碼的方式,只要改成如下:

只是稍微的做了點修改,把第24行里的密碼驗證改為了驗證碼驗證,這里password 字段用于存放驗證碼,而不再是用戶的密碼了。其它的邏輯都沒變。

這里改了之后,要在Usermodel 里加上check_verify_code這個方法,否則會報錯,還要修改類變量USERNAME_FIELD = 'mobile',不然還是會以username來認證,具體的實現(xiàn)邏輯根據(jù)自己的實際情況來,這里就不展示里面的邏輯。

好,用戶的認證改好了,還有最重要的一步,在settings.py里添加一條這樣的配置:

AUTHENTICATION_BACKENDS = ['common.backends.CustomModelBackends']  # 里面改成自己寫的認證類。格式必須是 包名.文件名.類名

到此就完成了。

總結(jié):(以手機號+驗證碼為例)

  1. 新建一個 CustomModelBackend 類,重寫 authenticate 方法,根據(jù)自己實際需求寫認證邏輯。
  2. 在Usermodel里添加驗證驗證碼的方法。
  3. 在Usermodel里改變類變量USERNAME_FIELD為mobile。
  4. 在在settings.py里添加一條配置:

AUTHENTICATION_BACKENDS = ['common.backends.CustomModelBackends']

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • .img/.hdr格式轉(zhuǎn).nii格式的操作

    .img/.hdr格式轉(zhuǎn).nii格式的操作

    這篇文章主要介紹了.img/.hdr格式轉(zhuǎn).nii格式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python+Requests+PyTest+Excel+Allure?接口自動化測試實戰(zhàn)

    Python+Requests+PyTest+Excel+Allure?接口自動化測試實戰(zhàn)

    本文主要介紹了Python+Requests+PyTest+Excel+Allure?接口自動化測試實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • OpenCV?基本圖形繪制函數(shù)詳解

    OpenCV?基本圖形繪制函數(shù)詳解

    這篇文章主要介紹了OpenCV?基本圖形繪制函數(shù),用于繪制圓的circle函數(shù),用于繪制填充的多邊形的fillPoly函數(shù),本文給大家提到好幾種,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • 使用Python獲取字典鍵對應值的兩種方法

    使用Python獲取字典鍵對應值的兩種方法

    對于字典通過鍵獲得值非常簡單,但通過值獲得鍵則需繞些彎子,下面這篇文章主要給大家介紹了關于如何使用Python獲取字典鍵對應值的相關資料,需要的朋友可以參考下
    2022-04-04
  • 詳解Python中range()與xrange()的區(qū)別

    詳解Python中range()與xrange()的區(qū)別

    range()?和?xrange()?是兩個函數(shù),可用于在?Python的?for?循環(huán)中迭代一定次數(shù)。本文將通過示例詳細說說二者的區(qū)別與使用,需要的可以參考一下
    2022-09-09
  • Python如何使用print()函數(shù)輸出格式化字符串

    Python如何使用print()函數(shù)輸出格式化字符串

    Python中內(nèi)置的%操作符和format函數(shù),都可以用于格式化字符串,下面這篇文章主要給大家介紹了關于Python如何使用print()函數(shù)輸出格式化字符串的相關資料,需要的朋友可以參考下
    2021-08-08
  • Python庫coala代碼分析和自動化檢查改進工具使用探索

    Python庫coala代碼分析和自動化檢查改進工具使用探索

    Python的coala工具是一個強大的代碼分析和自動化改進工具,它可以幫助開發(fā)人員自動化地檢查代碼并提供改進建議,本文將詳細介紹coala的功能和用法,并提供豐富的示例代碼來幫助大家深入了解它
    2024-01-01
  • 在python中創(chuàng)建表格的兩種方法實例

    在python中創(chuàng)建表格的兩種方法實例

    Python 是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設計語言,下面這篇文章主要給大家介紹了關于如何在python中創(chuàng)建表格的兩種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • python實現(xiàn)多線程抓取知乎用戶

    python實現(xiàn)多線程抓取知乎用戶

    本文給大家分享的是如何使用Python實現(xiàn)多線程抓取知乎用戶的思路以及代碼,非常的詳細,作者使用本程序成功抓取到了百萬用戶,有需要的小伙伴可以參考下
    2016-12-12
  • Pycharm 2020年最新激活碼(親測有效)

    Pycharm 2020年最新激活碼(親測有效)

    本文給大家分享Pycharm 2020年最新激活碼,親測試過可以放心使用,感興趣的朋友快來吧
    2020-01-01

最新評論