Django中的登入認證

2021-08-30 02:48:23 字數 1938 閱讀 6824

django中已經封裝好了後端的認證功能authenticate

1:django rest framework jwt提供了登入簽發jwt的檢視,可以直接使用

驗證使用者名稱和密碼,驗證成功後,為使用者簽發jwt,前端將簽發的jwt儲存下來。

登入流程為:

查詢使用者資料,將查詢到的資料和使用者輸入的資料對比驗證

request.user===>當前登入的使用者

僅使用下面的**即可實現登入和簽發token

from rest_framework_jwt.views import obtain_jwt_token

urlpatterns = [

url(r'^authorizations/$', obtain_jwt_token),

]

但是此檢視函式所返回的只有乙個token值,當需要獲取到其他值,如user.id,username等值時,需要重寫jwt_response_payload_handler函式

2:新建乙個py檔案重寫自定義返回值的函式

def jwt_response_payload_handler(token, user=none, request=none):

"""自定義jwt認證成功返回資料

"""return

然後修改專案的配置檔案

jwt_auth =
便可實現登入功能,此時可以返回給客戶端token值和id,顯示使用者名稱資訊

3:實現使用不同的註冊資訊進行登入,如使用手機號、郵箱 + 密碼登入。

主要的邏輯是接收到使用者輸入的登入資訊,使用正規表示式來判斷使用者是使用的那種註冊資訊登入的,然後根據註冊資訊查詢到使用者物件,返回使用者資訊,實現多種號碼都可登入的功能

檢視jwt檢視的源**發現,查詢驗證的工作是由authenticate()方法完成,這個方法是由django提供的。

修改django認證系統的認證後端需要繼承django.contrib.auth.backends.modelbackend,並重寫authenticate方法。

authenticate(self, request, username=none, password=none, **kwargs)方法的引數說明:

from django.contrib.auth.backends import modelbackend

class myauthenticationbackends(modelbackend):

"""根據username查詢 user物件, 在使用user物件的check_password對比密碼是否正確"""

def authenticate(self, request, username=none, password=none, **kwargs):

if re.match(r'^1[3-9]\d$', username):

user = user.objects.get(mobile=username)

else:

user = user.objects.get(username=username)

if user.check_password(password):

return user

else:

return none

再在配置檔案中告知django我們自定義的認證

authentication_backends = [

'users.utils.usernamemobileauthbackend',

]

總結思路:

1.定義類

2.重寫authenticate方法

3.配置authentication_backends=[類]

django登入認證錯誤

def register request if request.method post username request.post.get username password request.post.get password print username,password if user.obje...

Django使用ldap認證登入

一 安裝依賴包 yum install gcc libffi devel python devel openssl devel openldap devel y 二 安裝python庫 pip install python ldap pip install django auth ldap 三 修改...

django自帶登入認證與登入自動跳轉

匯入django自帶模組 from django.contrib.auth import authenticate,login,logout 使用authenticate進行認證,使用login方法將user寫入session user authenticate username username,...