django之基於requests API驗證

2021-09-09 07:55:29 字數 3064 閱讀 8232

驗證需要知道requests提交資料的幾種方式:

get 方式:

# get 方式,傳遞數值可以直接通過url傳遞:(服務端接受 get)

requests.get(url='')

# get 方式也可通過引數 params:(服務端接受 get)

requests.get(url='',params=)

post 方式:(在django中需要注意csrf)

host_data = ,

'ip':,

'master':'xiaohua',

}}# post 方式則通過data引數將資料傳遞(單層資料傳遞):(服務端接受 post)

requests.post(url='',data=host_data)

json方式:

# json 方式傳遞資料(多層巢狀資料,就必須用json形式傳遞)(服務端接受 body 中)

requests.post(url='',json=host_data,)

# json 獲取資料

# if request.method == 'post':

# info = json.loads(str(request.body, encoding='utf-8'))

# print(info)

headers 方式:

# headers 方式 也是可以傳遞資料的(服務端接受 meta 中,had欄位變更為 http_had)

requests.post(url='',headers=,)

原理分析:

api介面驗證

1.乙個認證的key server端 和 client端都必須有這麼乙個認證key。

2.認證登入的時間限定

3.儲存已驗證的資訊,在以後的驗證不能再次登入

client 端:

import requests

import hashlib

import time

# 基於驗證的key

au_key = "dawefgdsfsafdsadas"

# 基於驗證的時間

au_time = time.time()

# 將驗證的key與時間合併成乙個字元

au_key_time = "%s|%s"%(au_key,au_time)

# 將合併的字元進行md5加密

m = hashlib.md5()

m.update(bytes(au_key_time,encoding='utf-8'))

authkey = m.hexdigest()

# 將生成加密的 key 與 時間傳遞至服務端

url = ""

data =

headers =

a = requests.post(url=url,data=data,headers=headers)

print(a.text)

server 端views:

# 與client端一致的驗證key

au_key = "dawefgdsfsafdsadas"

# 從請求頭中取出client端 加密前的時間

# 將服務端的key 與 client的時間合併成字元

server_au_key = "%s|%s" % (au_key, client_au_time)

# 然後將字元也同樣進行md5加密

m = hashlib.md5()

m.update(bytes(server_au_key, encoding='utf-8'))

authkey = m.hexdigest()

# 取出client端加密的key

# 三重驗證機制

# 1.超出訪問時間5s後不予驗證通過。

server_time = time.time()

if server_time - 5 > float(client_au_time):

return httpresponse("超時!")

# 2.服務端加密的key值 跟 client發過來的加密key比對是否一致?

if authkey != clint_au_key:

return httpresponse("驗證失敗!")

# 3.比對當前的key值是否是以前訪問過的,訪問過的也不予驗證通過。

if authkey in au_list:

return httpresponse("驗證碼已過期")

# 將成功登陸的key值儲存在列表中。

return httpresponse("ok")1.建立views_api.py檔案, 編寫foo方法

2.urls.py配置介面路徑

from backend import views_api

urlpatterns = [

url(r'^api/', views_api.foo),

]3.呼叫

訪問: foo

django之基於cookie和裝飾器實現使用者認證

示例1 1 create your views here.2 user a 3 pwd a 4def login request 5if request.method get 6 return render request,login.html 7elif request.method post 8...

基於Django框架的python web

django是乙個開放源 的web應用框架,由python寫成。採用了mtv的框架模式,即模型m,檢視v和模版t。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的 的,即是cms 內容管理系統 軟體。並於2005年7月在bsd許可證下發布。這套框架是以比利時的吉普賽爵士吉他手djan...

nginx基於uwsgi部署django專案

1.安裝nginx yum install y nginx 需要epel源 2.安裝環境 可以考慮使用虛擬化環境,本處不再使用3.安裝uwsgi yum groupinstall development tools yum install zlib devel bzip2 devel pcre de...