Flask-JWT-Extended 是一個 Flask 插件,用于處理 JSON Web Tokens(JWT)。它具有許多內置功能,用于處理用戶認證和授權。
以下是一個簡單的 Flask-JWT-Extended 示例如下:
首先,使用 pip 安裝 flask_jwt_extended:
bash
Copy code
pip install flask-jwt-extended
創建一個基本的 Flask 應用并配置密鑰:
python
Copy code
from flask import Flask, jsonify, request
from flask_jwt_extended import JWTManager, jwt_required, create_access_token
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
jwt = JWTManager(app)
這里 JWT_SECRET_KEY 是用來簽名 JWTs 的密鑰。
創建一個路由來生成 JWT:
python
Copy code
@app.route('/login', methods=['POST'])
def login():
username = request.form.get("username")
password = request.form.get("password")
if username != 'test' or password != 'test':
return jsonify({"msg": "Bad username or password"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token)
這個路由用于用戶登錄,如果用戶名和密碼正確(這里簡化為用戶名和密碼都為 'test'),就生成一個包含用戶身份信息的 access token。
創建另一個路由,要求用戶需要有 JWT 才能訪問:
python
Copy code
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
return jsonify({'hello': 'world'})
這個 protected 路由使用 @jwt_required() 裝飾器,該裝飾器確保客戶端在請求時提供一個有效的 JWT。
運行應用:
python
Copy code
if __name__ == '__main__':
app.run()
在這個示例中,用戶首先需要向 /login 端點發送 POST 請求進行登錄,登錄成功后,將返回一個 JWT。然后用戶可以使用這個 JWT 作為認證信息來訪問 /protected 端點。
這只是 Flask-JWT-Extended 的基本使用,對于更復雜的需求,你可能需要處理刷新 token,添加用戶聲明,黑名單等等。你可以查閱文檔了解更多詳細內容
- 前言
- 1.入門篇
- Python介紹
- 安裝與使用
- Python開發利器之VS Code
- 模塊安裝
- 命令行
- 一次Python無法安裝模塊的問題探索與解決之旅
- 命令運行
- Conda
- 下載地址
- 2.基礎篇
- 基礎語法
- 輸入與輸出
- with as的用法
- 注釋
- Python命令行參數
- 編碼
- 變量類型
- 列表遍歷
- 運算符
- 表達式語句
- 條件
- 循環
- 日期和時間
- 函數
- 高級語法
- @符號-裝飾器
- 模塊和包
- name
- init.py
- 錯誤和異常
- 面向對象
- 3.專題篇
- 常用功能
- Python 字符串連接
- python web
- Python CGI編程
- Python OAuth2
- 認證 Flask-HTTPAuth
- 常用命令
- 內置函數
- dir()
- print(f)
- 標準模塊
- sys
- pickle-數據序列化
- os
- IO(輸入輸出)
- 鍵盤輸入
- 文件讀寫
- 測試
- Python測試框架之pytest快速入門
- pytest-bdd快速示例和問題解決
- 基于pytest-bdd的項目目錄結構和命名規范
- python BDD 的相關概念
- Behave介紹和快速示例
- Python BDD之Behave測試報告
- Python BDD 框架比較之 pytest-bdd vs behave
- pytest進階
- Flask + pytest測試
- 參考網址
- pytest-bdd進階
- hehave進階
- 測試路徑
- python + selunium
- HTML 根據多層CSS 查找元素
- 等待執行
- 使用text 查找 span
- pytest如何在控制臺輸出
- 4.問題篇
- pip pip3 及區別
- TypeError: can only concatenate str (not "NoneType") to str
- 5.實戰篇
- matplotlib-繪圖包
- 導入類
- 命名規范
- 模塊查找
- 6.進階篇
- Flask
- Flask介紹
- Flask擴展模塊
- Flask-Login
- 問題
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask實戰
- Flask 標準目錄結構
- Blueprints
- 參考
- FastAPI 測試
- https 證書 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate