Python Flask token身份認(rèn)證的示例代碼(附完整代碼)
前言
Python Flask是一個(gè)使用Python編寫的輕量級(jí)Web應(yīng)用框架,它可以非常方便地搭建Web應(yīng)用。在Web應(yīng)用中,經(jīng)常需要進(jìn)行身份認(rèn)證,以確保只有授權(quán)用戶才能訪問(wèn)某些資源。本文將介紹如何使用token進(jìn)行身份認(rèn)證,以及如何在Python Flask中實(shí)現(xiàn)token身份認(rèn)證。
一、什么是token身份認(rèn)證
token身份認(rèn)證(Token-based authentication)是一種常見的Web身份認(rèn)證方式,它是利用token來(lái)確保用戶的身份。每個(gè)用戶在登錄后都會(huì)得到一個(gè)token,通過(guò)該token來(lái)識(shí)別用戶的身份,這種方式可以減少服務(wù)器的負(fù)擔(dān),提高身份認(rèn)證的效率。在使用token身份認(rèn)證時(shí),用戶成功登錄后,服務(wù)器會(huì)生成一個(gè)token,將該token發(fā)送給客戶端??蛻舳嗽诤罄m(xù)的請(qǐng)求中,需要在請(qǐng)求頭中攜帶該token,以便服務(wù)器可以識(shí)別用戶的身份。服務(wù)器接收到請(qǐng)求后,會(huì)從token中解析出用戶的身份信息,并對(duì)該用戶進(jìn)行身份認(rèn)證。
二、如何實(shí)現(xiàn)token身份認(rèn)證
在Python Flask中,實(shí)現(xiàn)token身份認(rèn)證需要以下步驟:
1、安裝所需的依賴
flask flask_jwt_extended
可以使用pip命令來(lái)安裝:
pip install flask pip install flask_jwt_extended
2、創(chuàng)建一個(gè)Flask應(yīng)用
在Python代碼中引用flask庫(kù),并創(chuàng)建一個(gè)Flask應(yīng)用:
from flask import Flask app = Flask(__name__)
3、配置密鑰
需要在Flask應(yīng)用中配置一個(gè)密鑰secret_key,用于生成token和驗(yàn)證token的有效性。可以在Flask應(yīng)用中添加如下代碼:
app.config['JWT_SECRET_KEY'] = 'my_secret_key'
其中,'my_secret_key'可以替換成其他隨機(jī)字符串。
4、創(chuàng)建用戶登錄接口
在Flask應(yīng)用中,需要?jiǎng)?chuàng)建一個(gè)接口,用于用戶登錄,用戶輸入正確的用戶名和密碼后,生成一個(gè)token,返回給客戶端??梢栽贔lask應(yīng)用中添加如下代碼:
from flask import request, jsonify
from flask_jwt_extended import create_access_token
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if username != 'admin' or password != 'admin':
return jsonify({"msg": "Bad username or password"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200其中,'/login'是接口路徑,使用POST方法,接收用戶名和密碼。如果用戶名或密碼錯(cuò)誤,則返回401狀態(tài)碼和錯(cuò)誤提示。如果用戶名和密碼正確,則使用create_access_token方法生成一個(gè)token,該token的有效期默認(rèn)設(shè)置為15分鐘。
5、創(chuàng)建需要身份認(rèn)證的接口
在Flask應(yīng)用中,有些接口需要進(jìn)行身份認(rèn)證才能訪問(wèn),可以使用@jwt_required裝飾器來(lái)實(shí)現(xiàn)??梢栽贔lask應(yīng)用中添加如下代碼:
from flask_jwt_extended import jwt_required, get_jwt_identity
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
current_user = get_jwt_identity()
return jsonify(logged_in_as=current_user), 200其中,'/protected'是需要身份認(rèn)證的接口路徑,使用GET方法。使用@jwt_required裝飾器來(lái)表示需要進(jìn)行token身份認(rèn)證。在接口中,可以使用get_jwt_identity()方法獲取當(dāng)前用戶的身份信息。
6、啟動(dòng)Flask應(yīng)用
在Python代碼中添加如下代碼,啟動(dòng)Flask應(yīng)用:
if __name__ == '__main__':
app.run(debug=True)
三、完整代碼示例
from flask import Flask, request, jsonify
from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'my_secret_key'
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if username != 'admin' or password != 'admin':
return jsonify({"msg": "Bad username or password"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
current_user = get_jwt_identity()
return jsonify(logged_in_as=current_user), 200
if __name__ == '__main__':
app.run(debug=True)
四、總結(jié)
本文介紹了如何在Python Flask中使用token進(jìn)行身份認(rèn)證。通過(guò)以上步驟,可以快速地搭建一個(gè)基于token的身份認(rèn)證系統(tǒng)。在實(shí)際應(yīng)用中,還需要考慮如何管理token的有效性、token的過(guò)期時(shí)間等問(wèn)題。
到此這篇關(guān)于Python Flask token身份認(rèn)證的示例代碼(附完整代碼)的文章就介紹到這了,更多相關(guān)Flask token身份認(rèn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow2.0的函數(shù)簽名與圖結(jié)構(gòu)(推薦)
這篇文章主要介紹了tensorflow2.0的函數(shù)簽名與圖結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python中paramiko模塊的基礎(chǔ)操作與排錯(cuò)問(wèn)題
python的ssh庫(kù)操作需要引入一個(gè)遠(yuǎn)程控制的模塊——paramiko,可用于對(duì)遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,這篇文章主要介紹了Python學(xué)習(xí)之paramiko模塊的基礎(chǔ)操作與排錯(cuò),需要的朋友可以參考下2022-09-09
Python?torch.fft.rfft()函數(shù)用法示例代碼
大家應(yīng)該都知道新舊版的torch中的傅里葉變換函數(shù)在定義和用法上有所不同,下面這篇文章主要給大家介紹了關(guān)于Python?torch.fft.rfft()函數(shù)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
python之模擬鼠標(biāo)鍵盤動(dòng)作具體實(shí)現(xiàn)
這篇文章主要介紹了python之模擬鼠標(biāo)鍵盤動(dòng)作具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12
深度學(xué)習(xí)的MNIST手寫數(shù)字?jǐn)?shù)據(jù)集識(shí)別方式(準(zhǔn)確率99%,附代碼)
這篇文章主要介紹了深度學(xué)習(xí)的MNIST手寫數(shù)字?jǐn)?shù)據(jù)集識(shí)別方式(準(zhǔn)確率99%,附代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

