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