REST framework 五 認證元件

2021-08-22 05:03:29 字數 2394 閱讀 2253

rest framework 的認證元件是在* apiview *dispatch下執行的。跟著原始碼過了下,了解它的實現過程。

上圖源**中的self.authenticators就是乙個認證元件類的乙個列表,我們在接下來後面的自定義認證元件時,就要注意這裡面的源代源內容,自定義類的類名可以自己起,而類中的方法名是有特定的名字authenticator。因為源代源中user_auth_tuple=authenticator.authenticate(self)已經固定了這個方法名。另外還要注意一點,如果列表中只有乙個認證元件的話,可以返回乙個元組,但如果是多個認證元件的話,就只能在最後乙個自定義認證元件還回元組,或是都返回none。不然一有返回元組,就退出了for迴圈,接下來的認證元件都不會執行到。

到了這,就差不多裡已經出來結果了,只需要分析self是誰,如果自己類中定義authentication_classes就是自定的,如果沒有,就用預設的,我們接下來看看如果沒有自定義的,rest framework 是如何執行到預設的認證元件。

這上面的兩個元件就是預設的元件。

自定義乙個認證元件:

from rest_framework.exceptions import authenticationfailed

class

tokenauth

(authenticationfailed):

defauthenticate

(self,request):

token=request.get.get('token',none)

token_obj=usertoken.objects.filter(token=token).first()

if token_obj:

return token_obj.user.user,token_obj

else:

raise authenticationfailed('認證失敗!')

defauthenticate_header

(self, request):

pass

如果繼承baseauthentication類則不用定義authenticate_header

from rest_framework.authentication import baseauthentication

from rest_framework.exceptions import authenticationfailed

from api.models import usertoken

class

loginauth

(baseauthentication):

defauthenticate

(self, request):

token=request.get.get("token")

token_obj=usertoken.objects.filter(token=token).first()

if token_obj:

return token_obj.user,token_obj.token

else:

raise authenticationfailed("認證失敗")

學習週報 rest framework

本週學習情況 1.rest framework的學習 2.前後端分離5 2到5 6 下週學習計畫 停止課程內容學習 2.花10學習rest framework基礎的學習 本週完成情況 一 fbv,cbv 繼承 避免重複 1 優先順序從左往右 2 super 1.先在studentsview裡面查詢,...

rest framework登入認證

class user models.model user models.charfield max length 32 pwd models.charfield max length 32 class usertoken models.model token models.charfield max...

REST framework 渲染模組

根據 使用者請求url 或 使用者可接受的型別,篩選出合適的 渲染元件。頁面 postman from rest framework.renderers import jsonrenderer from rest framework.renderers import browsableapirend...