介面測試平台實戰(二) 使用者登入功能

2021-10-20 12:28:46 字數 3592 閱讀 3762

3.3 修改許可權類

四、新增登入路由

五、新建超級使用者

六、jwt

七、修改介面預設返回值

進入虛擬環境,新建乙個名為『users』的子應用,並在settings.py中註冊。

django為我們提供了使用者模組,我們可以直接使用,但是如果有需要新增的字段,我們可以繼承django中提供的,並在此基礎上新增修改。

from django.contrib.auth.models import abstractuser

class

users

(abstractuser)

: mobile = models.charfield(max_length=

11)

自己定義後還需要在全域性配置檔案中指定一下。auth_user_model的值為子應用名.model類名。

auth_user_model =

'users.users'

當前我們django提供的模型夠用,暫時不需要做以上的重寫。

在django中,只要繼承了apiview就有了認證和授權的功能。

閱讀原始碼,看到django提供了session認證。我們可以重寫default_authentication_classes來修改認證方式。

rest_framework =

上面是在全域性指定認證類,當然我們也可以在類檢視中指定。(一般不在類檢視中指定)

from rest_framework import authentication

class

projectviewset

(viewsets.modelviewset)

: authentication_classes =

[authentication.sessionauthentication, authentication.basicauthentication]

django預設drf框架使用的許可權類為allowany,具備所有許可權,我們也可以修改許可權。

drf中的許可權:

在全域性修改許可權(一般不這樣修改)

rest_framework =

一般來說我們會在類檢視中指定許可權,類檢視中許可權的優先順序最高。需要設定許可權的指定,不需要許可權就不用指定。

from rest_framework import permissions

class

projectviewset

(viewsets.modelviewset)

: permission_classes =

[permissions.isauthenticated]

這樣,就需要具備許可權才能請求介面。

但是我們沒有登入的入口,我們可以在全域性路由中指定drf提供的登入路由。

urlpatterns =[.

..path(

'api/'

, include(

'rest_framework.urls'))

,]

此時,訪問就可以進行登入了。

但是我們沒有使用者,我們可以通過命令列來新建超級使用者。

進入虛擬環境,輸入python manage.py createsuperuser,根據提示依次輸入使用者名稱、郵件位址、密碼即可。

此時我們資料庫的auth_user表中就多了一條使用者資料。

我們專案中使用jwt來做使用者認證。

在虛擬環境中使用命令pip install -i djangorestframework-jwt安裝jwt。

在settings.py檔案中進行kwt配置

rest_framework =

在users子應用中新增urls.py檔案。

obtain_jwt_token是django提供的路由

from django.urls import path

from rest_framework_jwt.views import obtain_jwt_token

urlpatterns =

[ path(

'login/'

, obtain_jwt_token)

]

在全域性路由中新增路由指向子路由。

urlpatterns =[.

..path(

'users/'

, include(

'users.urls'))

,]

此時我們通過api文件請求這個介面,就能夠返回token了。

當使用postman進行介面測試後,我們想要獲得許可權,需要在headers增加value為authorization,值為jwt token值,就擁有許可權了。

此時,我們的value就需要輸入bears token值。(此處我們暫時不做修改)

在全域性配置檔案settings.py中修改。

jwt_auth =

但是當前只返回了token,實際上我們還需要username和userid,我們需要把這兩個欄位也一併返回。

追蹤原始碼發現,返回值都有什麼,是jwt_response_payload_handler方法決定的,我們可以重寫這個方法。在utils資料夾中新增乙個檔案handle_jwt_response.py。

def

jwt_response_payload_handler

(token, user=

none

, request=

none):

return

這是django並不認識我們寫的這個方法,我們需要在全域性配置檔案中重新指定payload_handler為我們自己寫的方法。值為我們自己寫的方法的引用。

jwt_auth =

這樣django就會執行我們自己寫的這個方法。我們就返回了需要的值。完美!

測試「使用者登入」功能

如何測試 使用者登入 功能?我認為可以從功能性和非功能性兩個維度去思考。關於功能測試,首先可能會根據 使用者登入 功能的需求描述,結合等價類劃分和邊界值分析方法來設計測試用例。包括 輸入已註冊的使用者名稱和正確的密碼,驗證是否登入成功 輸入已註冊的使用者名稱和不正確的密碼,驗證是否登入失敗,並且提示...

Delphi 開發微信公眾平台 (二) 使用者管理

一 使用者標籤管理 1 建立標籤 建立標籤 2 獲取標籤 3 刪除標籤 刪除標籤 當某個標籤下的粉絲超過10w時,後台不可直接刪除標籤。此時,開發者可以對該標籤下的openid列表 先進行取消標籤的操作,直到粉絲數不超過10w後,才可直接刪除該標籤。4 編輯標籤 編輯標籤 二 設定使用者備註名 設定...

實戰 5 9 使用者功能所有模組測試

之前把各個使用者功能的開發全部放到一篇部落格中了,這裡就直接跳到5 9了哈 這裡會使用之前介紹的chrome外掛程式restlet client來模擬訪問,確實非常好用,像我這種前端不太會寫的就暫時不用費心了。之前寫配置檔案的時候,很多檔案目錄寫得是以後linux雲主機上的位置,現在要先在本地除錯一...