前言
Python Flask是一個使用Python編寫的輕量級Web應(yīng)用框架,它可以非常方便地搭建Web應(yīng)用。在Web應(yīng)用中,經(jīng)常需要進行身份認證,以確保只有授權(quán)用戶才能訪問某些資源。本文將介紹如何使用token進行身份認證,以及如何在Python Flask中實現(xiàn)token身份認證。
一、什么是token身份認證
token身份認證(Token-based authentication)是一種常見的Web身份認證方式,它是利用token來確保用戶的身份。每個用戶在登錄后都會得到一個token,通過該token來識別用戶的身份,這種方式可以減少服務(wù)器的負擔,提高身份認證的效率。在使用token身份認證時,用戶成功登錄后,服務(wù)器會生成一個token,將該token發(fā)送給客戶端。客戶端在后續(xù)的請求中,需要在請求頭中攜帶該token,以便服務(wù)器可以識別用戶的身份。服務(wù)器接收到請求后,會從token中解析出用戶的身份信息,并對該用戶進行身份認證。
二、如何實現(xiàn)token身份認證
在Python Flask中,實現(xiàn)token身份認證需要以下步驟:
1、安裝所需的依賴
flask flask_jwt_extended
可以使用pip命令來安裝:
pip install flask
pip install flask_jwt_extended
2、創(chuàng)建一個Flask應(yīng)用
在Python代碼中引用flask庫,并創(chuàng)建一個Flask應(yīng)用:
from flask import Flask
app = Flask(__name__)
3、配置密鑰
需要在Flask應(yīng)用中配置一個密鑰secret_key,用于生成token和驗證token的有效性??梢栽贔lask應(yīng)用中添加如下代碼:
app.config['JWT_SECRET_KEY'] = 'my_secret_key'
其中,'my_secret_key'可以替換成其他隨機字符串。
4、創(chuàng)建用戶登錄接口
在Flask應(yīng)用中,需要創(chuàng)建一個接口,用于用戶登錄,用戶輸入正確的用戶名和密碼后,生成一個token,返回給客戶端。可以在Flask應(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方法,接收用戶名和密碼。如果用戶名或密碼錯誤,則返回401狀態(tài)碼和錯誤提示。如果用戶名和密碼正確,則使用create_access_token方法生成一個token,該token的有效期默認設(shè)置為15分鐘。
5、創(chuàng)建需要身份認證的接口
在Flask應(yīng)用中,有些接口需要進行身份認證才能訪問,可以使用@jwt_required裝飾器來實現(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'是需要身份認證的接口路徑,使用GET方法。使用@jwt_required裝飾器來表示需要進行token身份認證。在接口中,可以使用get_jwt_identity()方法獲取當前用戶的身份信息。
6、啟動Flask應(yīng)用
在Python代碼中添加如下代碼,啟動Flask應(yīng)用:文章來源:http://www.zghlxwxcb.cn/news/detail-686311.html
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進行身份認證。通過以上步驟,可以快速地搭建一個基于token的身份認證系統(tǒng)。在實際應(yīng)用中,還需要考慮如何管理token的有效性、token的過期時間等問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-686311.html
到了這里,關(guān)于【Python】Python Flask token身份認證(附完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!