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

Python接口自動化淺析Token應(yīng)用原理

 更新時間:2021年08月24日 16:59:20   作者:軟件測試自動化測試  
本文主要介紹token基本概念、運行原理及在自動化中接口如何攜帶token進行訪問,附含源碼,內(nèi)容非常詳細易理解,有需要的朋友可以參考下

在之前的Python接口自動化測試系列文章:Python接口自動化之cookie、session應(yīng)用詳解,介紹了cookie、session原理及在自動化過程中如何利用cookie、session保持會話狀態(tài)。

以下介紹Token原理及在自動化中的應(yīng)用。

一、Token基本概念及原理

1、Token作用

為了驗證用戶登錄情況以及減輕服務(wù)器的壓力,減少頻繁的查詢數(shù)據(jù)庫,使服務(wù)器更加健壯。

2、什么是Token

Token是服務(wù)端生成的一串字符串,以作客戶端進行請求的一個令牌,當(dāng)?shù)谝淮蔚卿浐?,服?wù)器生成一個Token便將此Token返回給客戶端,以后客戶端只需帶上這個Token前來請求數(shù)據(jù)即可,無需再次帶上用戶名和密碼。

3、Token運行原理

1.當(dāng)用戶首次登錄成功之后, 服務(wù)器端就會生成一個 token 值,這個值會在服務(wù)器保存token值(保存在數(shù)據(jù)庫中),再將這個token值返回給客戶端;

2.客戶端拿到 token 值之后,進行保存 (保存位置由服務(wù)器端設(shè)置);

3.以后客戶端再次發(fā)送網(wǎng)絡(luò)請求(一般不是登錄請求)的時候,就會將這個 token 值附帶到參數(shù)中發(fā)送給服務(wù)器;

4.服務(wù)器接收到客戶端的請求之后,會取出token值與保存在本地(數(shù)據(jù)庫)中的token值進行比較;

5.如果兩個 token 值相同, 說明用戶登錄成功過,當(dāng)前用戶處于登錄狀態(tài);

6.如果沒有這個 token 值, 沒有登錄成功;

7.如果 token 值不同,說明原來的登錄信息已經(jīng)失效,讓用戶重新登錄;

4、Token認(rèn)證優(yōu)點

無狀態(tài)(也稱:服務(wù)端可擴展行):Token機制在服務(wù)端不需要存儲session信息,因為Token 自身包含了所有登錄用戶的信息,只需要在客戶端的cookie或本地介質(zhì)存儲狀態(tài)信息.

可重用性:在多個平臺和域(domains)上運行,重復(fù)使用相同的令牌來驗證用戶,很容易構(gòu)建與其他應(yīng)用程序共享權(quán)限的應(yīng)用程序。

安全性:由于我們沒有使用 Cookies,我們不必再防御網(wǎng)站的跨站點請求偽造(CSRF)攻擊。

5、Token和 Cookie、Session 的選型

對于只需要登錄用戶并訪問存儲在站點數(shù)據(jù)庫中的一些信息的中小型網(wǎng)站來說,Session Cookies 通常就能滿足。如果有企業(yè)級站點,應(yīng)用程序或附近的站點,并且需要處理大量的請求,尤其是第三方或很多第三方(包括位于不同域的API),則 token顯然更適合。

二、Token實戰(zhàn)

講了那么多概念和原理,很多小伙伴可能不知道token長啥樣,接下來以接口登錄為例。

import requests
url = 'http://127.0.0.1:8000/user/login/'
payload = {
    "username":"vivi",
    "password":"123456"
}
res = requests.post(url,json=payload)
print(res.text)

響應(yīng)結(jié)果如下:

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InZpdmkiLCJleHAiOjE1ODY4NDg5NzgsImVtYWlsIjoidml2aUBxcS5jb20ifQ.a2ExtNVjGrY8T1gefcJTnk4JUOx9NVtCk6lMK8o47co",
  "user_id": 1,
  "username": "vivi"
}

響應(yīng)結(jié)果有返回token,但是token要怎么用呢,不急,我們一步步來。

假設(shè)現(xiàn)在有個項目列表的接口,在不登錄的前提下,不能訪問。

import requests
url = 'http://127.0.0.1:8000/projects/'
pro_res = requests.get(url)
print(pro_res.json())

響應(yīng)結(jié)果:提供認(rèn)證信息

{'detail': '身份認(rèn)證信息未提供。'}

項目列表接口需要攜帶token,服務(wù)器校驗成功后,才能成功返回信息

重點來了,如何從登錄接口獲取token,項目列表接口又如何攜帶token?

訪問登錄接口,并獲取token。

import requests
url = 'http://127.0.0.1:8000/user/login/'
payload = {
    "username":"vivi",
    "password":"123456"
}
login_res = requests.post(url,json=payload)
# 從響應(yīng)結(jié)果中獲取token值
token = login_res.json()["token"]
print("token:", token)

響應(yīng)結(jié)果為:

token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InZpdmkiLCJleHAiOjE1ODY4NTEyMjksImVtYWlsIjoidml2aUBxcS5jb20ifQ.neqVM5MFGuFbKIUOCqW_qXBajhTTQMfmAs2PWTkEMes

那項目列表接口又如何攜帶token呢,token直接加在請求頭,這樣就可以了么,當(dāng)然不是,我們還需要在token前加上前綴,前綴由后端設(shè)置,見過最多的前綴是:Bearer,不清楚的參照接口文檔。

項目列表攜帶token訪問。

import requests
url = 'http://127.0.0.1:8000/projects/'
# 拼接最終的token,注意中間有個空格
token = "Bearer" + " " + token
headers={
    "authorization": token
}
pro_res = requests.get(url,headers=headers)
print(pro_res.json())

響應(yīng)結(jié)果為:

{
    "count": 2,
    "results": [
        {
            "id": 1,
            "name": "自動化測試平臺項目1",
            "tester": "vivi"
        },
        {
            "id": 2,
            "name": "自動化測試平臺項目2",
            "tester": "coco"
        }
    ],
    "total_pages": 1,
    "current_page_num": 1
}

到此這篇關(guān)于Python接口自動化之淺析requests模塊post請求的文章就介紹到這了,更多相關(guān)Python接口自動化equests模塊post請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python Celery和RabbitMQ實戰(zhàn)教程

    詳解Python Celery和RabbitMQ實戰(zhàn)教程

    這篇文章主要介紹了詳解Python Celery和RabbitMQ實戰(zhàn)教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python裝飾器用法實例總結(jié)

    Python裝飾器用法實例總結(jié)

    這篇文章主要介紹了Python裝飾器用法,結(jié)合實例形式總結(jié)分析了Python裝飾器的功能、原理及常見使用方法,需要的朋友可以參考下
    2018-05-05
  • 關(guān)于win10在tensorflow的安裝及在pycharm中運行步驟詳解

    關(guān)于win10在tensorflow的安裝及在pycharm中運行步驟詳解

    這篇文章主要介紹了關(guān)于win10在tensorflow的安裝及在pycharm中運行的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 解決python打開https出現(xiàn)certificate verify failed的問題

    解決python打開https出現(xiàn)certificate verify failed的問題

    這篇文章主要介紹了解決python打開https出現(xiàn)certificate verify failed的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • OpenCV圖像識別之相機校準(zhǔn)Camera?Calibration學(xué)習(xí)

    OpenCV圖像識別之相機校準(zhǔn)Camera?Calibration學(xué)習(xí)

    這篇文章主要為大家介紹了OpenCV圖像識別之相機校準(zhǔn)Camera?Calibration學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Python制作一個多功能音樂播放器

    Python制作一個多功能音樂播放器

    本文主要介紹了Python制作一個多功能音樂播放器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • flask框架自定義過濾器示例【markdown文件讀取和展示功能】

    flask框架自定義過濾器示例【markdown文件讀取和展示功能】

    這篇文章主要介紹了flask框架自定義過濾器,結(jié)合實例形式分析了flask基于自定義過濾器實現(xiàn)markdown文件讀取和展示功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Django模型序列化返回自然主鍵值示例代碼

    Django模型序列化返回自然主鍵值示例代碼

    這篇文章主要給大家介紹了關(guān)于Django模型序列化返回自然主鍵值的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python獲取一組數(shù)據(jù)里最大值max函數(shù)用法實例

    python獲取一組數(shù)據(jù)里最大值max函數(shù)用法實例

    這篇文章主要介紹了python獲取一組數(shù)據(jù)里最大值max函數(shù)用法,實例分析了max函數(shù)的使用技巧,需要的朋友可以參考下
    2015-05-05
  • python中將txt文件轉(zhuǎn)換為csv文件的三種方法舉例

    python中將txt文件轉(zhuǎn)換為csv文件的三種方法舉例

    對于大數(shù)據(jù)的處理基本都是以CSV文件為基礎(chǔ)進行的,那么在進行深度學(xué)習(xí)的處理之前,需要先統(tǒng)一數(shù)據(jù)文件的格式,下面這篇文章主要給大家介紹了關(guān)于python中將txt文件轉(zhuǎn)換為csv文件的三種方法,需要的朋友可以參考下
    2024-06-06

最新評論