Flask定義token以及利用token驗證登入

2021-09-05 10:13:22 字數 2491 閱讀 4479

匯入的包

from flask_pymongo import pymongo

from itsdangerous import timedjsonwebsignatureserializer as serializer

from flask_sqlalchemy import sqlalchemy

token的生成函式

def generate_token

(api_users)

: expiration =

3600

s =serializer

'secret_key'

], expires_in=expiration) #expiration是過期時間

token = s.

dumps()

.decode

('ascii'

)return token, expiration

輸入使用者名稱和密碼返回資料和token

route

('/find'

, methods=

['get'])

def find()

: user = request.args.

get(

'user'

) #利用這個request.args.

get方法可以模擬postman輸入引數

password = request.args.

get(

'password'

) box_id = request.args.

get(

'box_id'

) user = user.query.

filter_by

(user=user, password=password)

.first()

result = mongo.db[box_id]

.find()

.sort([

("t",-

1)])

.limit(1

) list =

for res in result:

list.

(str

(res)

) token =

generate_token

(user)

str_token =

str(token)

list.

(str_token)

json_data =

jsonify

(list)

return json_data

token的驗證函式

def verify_auth_token

(token)

: s =

serializer

'secret_key'])

try:

data = s.

loads

(token)

except signatureexpired:

return none # valid token,but expired

except badsignature:

return none # invalid token

user = user.query.

get(data[

'id'])

return user

使用token驗證函式進行驗證

route

('/token'

, methods=

['get'

,'post'])

def token()

: token = request.args.

get(

'token'

) _token =

verify_auth_token

(token)

# print

(_token)

user = user.query.

filter_by

(id=_token.id)

.first()

result = mongo.db[user.box_id]

.find()

.sort([

("t",-

1)])

.limit(1

) list =

for res in result:

list.

(str

(res)

) json_data =

jsonify

(list)

return json_data

其中_token驗證完成後是乙個物件,裡面是你資料庫所對應的物件

第一遍你要輸入使用者名稱密碼 然後呼叫token生成函式 得到返回的token值,

這樣你第二步可以直接輸入token,不需要輸入使用者名稱密碼也可以得到

相應的值了!

Flask定義token以及利用token驗證登入

匯入的包 from flask pymongo import pymongo from itsdangerous import timedjsonwebsignatureserializer as serializer from flask sqlalchemy import sqlalchemy ...

cookie,session以及token的介紹

是由瀏覽器維持,儲存在客戶端的一小段文字資訊。使用者每次訪問站點時,web服務都可以讀取cookie中的資訊 cookie根據生命週期分為會話cookie和持久cookie。todo 中文翻譯為會話。在伺服器上儲存使用者操作的歷史資訊。伺服器會使用類似雜湊表的結構儲存資訊,每乙個 客戶都會被分配乙個...

什麼是 token 以及 token 怎麼用

token的引入 token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,token便應運而生。token 的作用 在進行敏感操作之前,每個請求需要攜帶token,但是token 有有效期,token...