Flask-JWT-Extended 使用教程

Flask-JWT-Extended 使用教程

flask-jwt-extended An open source Flask extension that provides JWT support (with batteries included)!项目地址:https://gitcode.com/gh_mirrors/fl/flask-jwt-extended

项目介绍

Flask-JWT-Extended 是一个开源的 Flask 扩展,提供了 JSON Web Token (JWT) 支持,包括多种功能和工具。这个项目不仅支持基本的 JWT 认证,还提供了诸如刷新令牌、范围和角色、JWT 的 CSRF 保护等高级功能。

项目快速启动

安装

首先,你需要通过 pip 安装 Flask-JWT-Extended:

pip install flask-jwt-extended

基本配置

以下是一个基本的 Flask 应用示例,展示了如何配置和使用 Flask-JWT-Extended:

from flask import Flask, jsonify, request
from flask_jwt_extended import JWTManager, create_access_token

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret'  # 更改此密钥
jwt = JWTManager(app)

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username', None)
    password = request.json.get('password', None)
    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)

if __name__ == '__main__':
    app.run()

应用案例和最佳实践

刷新令牌

Flask-JWT-Extended 支持刷新令牌,这可以用来生成新的访问令牌而不需要用户重新认证。以下是如何实现刷新令牌的示例:

from flask_jwt_extended import create_refresh_token

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username', None)
    password = request.json.get('password', None)
    if username != 'test' or password != 'test':
        return jsonify({"msg": "Bad username or password"}), 401

    access_token = create_access_token(identity=username)
    refresh_token = create_refresh_token(identity=username)
    return jsonify(access_token=access_token, refresh_token=refresh_token)

保护路由

你可以使用装饰器来保护特定的路由,确保只有认证用户可以访问:

from flask_jwt_extended import jwt_required

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    return jsonify({"msg": "This is a protected route"})

典型生态项目

Flask-JWT-Extended 通常与其他 Flask 扩展一起使用,以构建完整的后端服务。例如,它可以与 Flask-SQLAlchemy 结合使用来管理用户数据,或者与 Flask-RESTful 结合使用来构建 REST API。

结合 Flask-SQLAlchemy

以下是一个简单的示例,展示了如何将 Flask-JWT-Extended 与 Flask-SQLAlchemy 结合使用:

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

@app.route('/register', methods=['POST'])
def register():
    username = request.json.get('username', None)
    password = request.json.get('password', None)
    new_user = User(username=username, password=password)
    db.session.add(new_user)
    db.session.commit()
    return jsonify({"msg": "User created successfully"}), 201

通过这些模块的介绍和示例,你应该能够快速上手并有效地使用 Flask-JWT-Extended 来增强你的 Flask 应用的安全性。

flask-jwt-extended An open source Flask extension that provides JWT support (with batteries included)!项目地址:https://gitcode.com/gh_mirrors/fl/flask-jwt-extended

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

房迁伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值