Flask JWT实战指南:轻松实现token认证
2023-11-10 05:38:38
使用 Flask-JWT-Extended 轻松实现用户认证
简介
随着互联网的飞速发展,用户认证已成为现代 Web 应用程序不可或缺的一部分。JSON Web Token(JWT)凭借其紧凑性、安全性以及跨平台兼容性,已成为一种广泛采用的认证机制。Flask-JWT-Extended 是一个专门针对 Flask 框架设计的轻量级扩展,它提供了全面且易于使用的 JWT 集成功能。
集成 Flask-JWT-Extended
-
安装: 使用 pip 命令安装 Flask-JWT-Extended。
pip install Flask-JWT-Extended
-
初始化: 在 Flask 应用程序中导入并初始化 Flask-JWT-Extended。
from flask_jwt_extended import JWTManager app = Flask(__name__) app.config['JWT_SECRET_KEY'] = 'super-secret' # 替换为您的密钥 jwt = JWTManager(app)
创建 JWT
要生成 JWT,使用 create_access_token()
函数,并指定用户的身份。
from flask_jwt_extended import create_access_token
token = create_access_token(identity='username')
验证 JWT
通过 @jwt_required
装饰器保护端点,并在视图函数中使用 get_jwt_identity()
获取当前用户标识。
from flask_jwt_extended import jwt_required, get_jwt_identity
@app.route('/protected')
@jwt_required
def protected():
current_user = get_jwt_identity()
return jsonify({'msg': 'Hello, %s!' % current_user})
刷新 JWT
使用 @jwt_refresh_token_required
装饰器保护刷新端点,并在视图函数中使用 create_access_token()
生成新的访问令牌。
from flask_jwt_extended import jwt_refresh_token_required, get_jwt_identity
@app.route('/refresh')
@jwt_refresh_token_required
def refresh():
current_user = get_jwt_identity()
new_token = create_access_token(identity=current_user)
return jsonify({'token': new_token})
撤销 JWT
使用 jwt_revoke_token()
函数撤销 JWT,根据其唯一的标识符(jti)。
from flask_jwt_extended import jwt_required, jwt_revoke_token
@app.route('/revoke')
@jwt_required
def revoke():
jti = get_raw_jwt()['jti']
jwt_revoke_token(jti)
return jsonify({'msg': 'Token revoked'})
结论
Flask-JWT-Extended 提供了一个简单易用的平台,可将 JWT 集成到 Flask 应用程序中。它提供了一系列强大的功能,包括创建、验证、刷新和撤销 JWT,确保您的应用程序安全可靠。
常见问题解答
-
什么是 JWT?
JWT 是一种紧凑型加密令牌,用于安全地表示和传输用户身份和其他信息。 -
为什么使用 JWT?
JWT 提供了以下优势:安全、跨平台兼容、可自定义以及容易集成。 -
Flask-JWT-Extended 有什么优势?
Flask-JWT-Extended 专为 Flask 框架设计,提供了一整套易于使用的 JWT 功能。 -
如何自定义 JWT 负载?
您可以使用user_claims_loader
配置项或在create_access_token()
函数中指定其他声明。 -
如何使用黑名单实现 JWT 撤销?
Flask-JWT-Extended 支持黑名单,您可以将被撤销的 JWT 的 jti 添加到黑名单存储中。