關(guān)于Python中flask-httpauth庫用法詳解
Flask-HTTPAuth是一個(gè) Flask 擴(kuò)展,它簡化了 HTTP 身份驗(yàn)證與 Flask 路由的使用。
安裝:
pip install flask_httpauth
1、基本身份驗(yàn)證示例
以下示例應(yīng)用程序使用 HTTP 基本身份驗(yàn)證來保護(hù)路由'/':
示例代碼:
from flask import Flask from flask_httpauth import HTTPBasicAuth from werkzeug.security import generate_password_hash, check_password_hash app = Flask(__name__) auth = HTTPBasicAuth() users = { "zhangsan": generate_password_hash("123456"), "lisi": generate_password_hash("123456") } @auth.verify_password def verify_password(username, password): if username in users and \ check_password_hash(users.get(username), password): return username @app.route('/') @auth.login_required def index(): return "Hello, {}!".format(auth.current_user()) if __name__ == '__main__': app.run()
運(yùn)行效果:
用裝飾器裝飾的函數(shù)verify_password接收客戶端發(fā)送的用戶名和密碼。如果憑據(jù)屬于用戶,則該函數(shù)應(yīng)返回用戶對象。如果憑據(jù)無效,該函數(shù)可以返回Noneor False。current_user()然后可以從身份驗(yàn)證實(shí)例的方法中查詢用戶對象。
1.1 使用postman請求
直接請求,不輸入驗(yàn)證:
輸入驗(yàn)證:
1.2 使用python請求
示例代碼:
import requests url = "http://127.0.0.1:5000" payload={} headers = { 'Authorization': 'Basic emhhbmdzYW46MTIzNDU2' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
運(yùn)行結(jié)果:
注意:Authorization值的通過base64加密方式進(jìn)行加密的,可以對其進(jìn)行解密的。
import base64 s = 'emhhbmdzYW46MTIzNDU2' res = base64.b64decode(s).decode() print(res) # zhangsan:123456
2、摘要認(rèn)證示例
以下示例使用 HTTP 摘要身份驗(yàn)證:
from flask import Flask from flask_httpauth import HTTPDigestAuth app = Flask(__name__) app.config['SECRET_KEY'] = 'secret key here' # 摘要認(rèn)證必須要有SECRET_KEY auth = HTTPDigestAuth() users = { "john": "hello", "susan": "bye" } @auth.get_password def get_pw(username): if username in users: return users.get(username) return None @app.route('/') @auth.login_required def index(): return "Hello, {}!".format(auth.username()) if __name__ == '__main__': app.run()
運(yùn)行結(jié)果:
3、令牌認(rèn)證示例
以下示例應(yīng)用程序使用自定義 HTTP 身份驗(yàn)證方案來保護(hù)'/'帶有令牌的路由:
from flask import Flask from flask_httpauth import HTTPTokenAuth app = Flask(__name__) auth = HTTPTokenAuth(scheme='Bearer') tokens = { "secret-token-1": "john", "secret-token-2": "susan" } @auth.verify_token def verify_token(token): if token in tokens: return tokens[token] @app.route('/') @auth.login_required def index(): return "Hello, {}!".format(auth.current_user()) if __name__ == '__main__': app.run()
運(yùn)行結(jié)果:
這HTTPTokenAuth是一個(gè)通用的身份驗(yàn)證處理程序,可以與非標(biāo)準(zhǔn)身份驗(yàn)證方案一起使用,方案名稱作為構(gòu)造函數(shù)中的參數(shù)給出。在上面的示例中,WWW-Authenticate服務(wù)器提供的標(biāo)頭將用作Bearer方案:
WWW-Authenticate: Bearer realm="Authentication Required"
回調(diào)verify_token接收客戶端在標(biāo)頭上提供的身份驗(yàn)證憑據(jù)Authorization。這可以是一個(gè)簡單的標(biāo)記,也可以包含多個(gè)參數(shù),函數(shù)必須從字符串中解析和提取這些參數(shù)。與 一樣verify_password,如果令牌有效,該函數(shù)應(yīng)返回用戶對象。
在示例目錄中,您可以找到使用 JWS 令牌的完整示例。JWS 令牌類似于 JWT 令牌。但是,使用 JWT 令牌需要外部依賴。
到此這篇關(guān)于關(guān)于Python中flask-httpauth庫用法詳解的文章就介紹到這了,更多相關(guān)Python的flask-httpauth庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Matplotlib實(shí)戰(zhàn)之百分比柱狀圖繪制詳解
百分比堆疊式柱狀圖是一種特殊的柱狀圖,可以用于可視化比較不同類別或組的百分比或比例的圖表,下面我們就來介紹一下如何使用Matplotlib繪制百分比柱狀圖,需要的可以參考下2023-08-08Pandas處理時(shí)間序列數(shù)據(jù)操作詳解
這篇文章主要介紹了Pandas處理時(shí)間序列數(shù)據(jù)操作詳解,文章首先利用python自帶datetime庫,通過調(diào)用此庫可以獲取本地時(shí)間展開內(nèi)容說明具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06Python3.6 + TensorFlow 安裝配置圖文教程(Windows 64 bit)
這篇文章主要介紹了Python3.6 + TensorFlow 安裝配置的教程(Windows 64 bit),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02flask中主動(dòng)拋出異常及統(tǒng)一異常處理代碼示例
這篇文章主要介紹了flask中主動(dòng)拋出異常及統(tǒng)一異常處理代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01淺談python3發(fā)送post請求參數(shù)為空的情況
今天小編就為大家分享一篇淺談python3發(fā)送post請求參數(shù)為空的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12使用Python腳本對Linux服務(wù)器進(jìn)行監(jiān)控的教程
這篇文章主要介紹了使用Python程序?qū)inux服務(wù)器進(jìn)行監(jiān)控的教程,主要基于Python2.7的版本,需要的朋友可以參考下2015-04-04windows10環(huán)境下用anaconda和VScode配置的圖文教程
這篇文章主要介紹了windows10環(huán)境下用anaconda和VScode配置的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家介紹的非常詳細(xì),需要的朋友可以參考下2020-03-03Python結(jié)合spaCy?進(jìn)行簡易自然語言處理
這篇文章主要為大家介紹了Python結(jié)合spaCy進(jìn)行簡易自然語言處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06