最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年06月30日 17:08:09   作者:Conamore  
這篇文章主要給大家介紹了關(guān)于Django自定義用戶登錄認證的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用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ù)庫里的是否一致并且該用戶是否有登錄權(quán)限,驗證都通過后就把 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)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python連接SQL Server數(shù)據(jù)庫并實時讀取數(shù)據(jù)

    Python連接SQL Server數(shù)據(jù)庫并實時讀取數(shù)據(jù)

    在Python中,可以使用pyodbc庫來連接SQL Server數(shù)據(jù)庫,并使用pandas庫來進行數(shù)據(jù)處理,下面我們就來講講如何實時讀取SQL Server數(shù)據(jù)庫表,并將數(shù)據(jù)寫入Excel文件,需要的可以參考下
    2023-12-12
  • python轉(zhuǎn)換字符串為摩爾斯電碼的方法

    python轉(zhuǎn)換字符串為摩爾斯電碼的方法

    這篇文章主要介紹了python轉(zhuǎn)換字符串為摩爾斯電碼的方法,涉及Python字符串及編碼操作的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • python常用文件操作(讀寫追加等)

    python常用文件操作(讀寫追加等)

    在Python中,文件操作是一項常用的任務,本節(jié)將介紹如何執(zhí)行基本的文件操作,如讀取、寫入和追加數(shù)據(jù),我們將通過實例代碼詳細講解每個知識點
    2023-06-06
  • python發(fā)送偽造的arp請求

    python發(fā)送偽造的arp請求

    本文介紹了python發(fā)送偽造的arp請求的示例代碼,大家參考使用吧
    2014-01-01
  • Python之os操作方法(詳解)

    Python之os操作方法(詳解)

    下面小編就為大家?guī)硪黄狿ython之os操作方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python查找相似單詞的方法

    Python查找相似單詞的方法

    這篇文章主要介紹了Python查找相似單詞的方法,涉及Python針對字符串的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python中正反斜杠的正確使用方法

    Python中正反斜杠的正確使用方法

    在Python編程中,字符串是一個常用的數(shù)據(jù)類型,字符串中的斜杠(反斜杠\和正斜杠/)具有特殊的用法和意義,本文將介紹這兩種斜杠的用法,,需要的朋友可以參考下
    2025-04-04
  • 解決項目pycharm能運行,在終端卻無法運行的問題

    解決項目pycharm能運行,在終端卻無法運行的問題

    今天小編就為大家分享一篇解決項目pycharm能運行,在終端卻無法運行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解Python3操作Mongodb簡明易懂教程

    詳解Python3操作Mongodb簡明易懂教程

    本篇文章主要介紹了詳解Python3操作Mongodb簡明易懂教程,詳細的介紹了如何連接數(shù)據(jù)庫和對數(shù)據(jù)庫的操作,有需要的可以了解一下。
    2017-05-05
  • Python雙鏈表原理與實現(xiàn)方法詳解

    Python雙鏈表原理與實現(xiàn)方法詳解

    這篇文章主要介紹了Python雙鏈表原理與實現(xiàn)方法,結(jié)合實例形式詳細分析了Python雙鏈表的概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-02-02

最新評論

博客| 广灵县| 新乡县| 兖州市| 临江市| 遵化市| 阳高县| 东港市| 洛浦县| 宜都市| 公安县| 山丹县| 新平| 麦盖提县| 图们市| 共和县| 新邵县| 苗栗市| 砚山县| 涞水县| 德化县| 正宁县| 宁安市| 威远县| 三都| 河北省| 资兴市| 博客| 洛扎县| 崇明县| 闽侯县| 舞钢市| 建阳市| 临泽县| 司法| 新源县| 凤凰县| 滕州市| 大丰市| 伊春市| 于田县|