Flask-JWT 使用教程
项目介绍
Flask-JWT 是一个为 Flask 应用添加 JSON Web Token (JWT) 认证功能的扩展。它提供了一种简单的方式来保护你的 Flask 路由,确保只有携带有效 JWT 的用户才能访问受保护的资源。Flask-JWT 的核心功能包括生成 JWT、验证 JWT 以及在请求中使用 JWT。
项目快速启动
安装
首先,你需要通过 pip 安装 Flask-JWT:
pip install Flask-JWT
基本配置
以下是一个基本的 Flask 应用配置示例,展示了如何使用 Flask-JWT:
from flask import Flask
from flask_jwt import JWT, jwt_required, current_identity
from werkzeug.security import safe_str_cmp
class User(object):
def __init__(self, id, username, password):
self.id = id
self.username = username
self.password = password
def __str__(self):
return "User(id='%s')" % self.id
users = [
User(1, 'user1', 'abcxyz'),
User(2, 'user2', 'abcxyz')
]
username_table = {u.username: u for u in users}
userid_table = {u.id: u for u in users}
def authenticate(username, password):
user = username_table.get(username, None)
if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')):
return user
def identity(payload):
user_id = payload['identity']
return userid_table.get(user_id, None)
app = Flask(__name__)
app.config['SECRET_KEY'] = 'super-secret'
jwt = JWT(app, authenticate, identity)
@app.route('/protected')
@jwt_required()
def protected():
return '%s' % current_identity
if __name__ == '__main__':
app.run()
应用案例和最佳实践
保护路由
使用 @jwt_required() 装饰器可以保护你的 Flask 路由,确保只有携带有效 JWT 的用户才能访问:
@app.route('/protected')
@jwt_required()
def protected():
return jsonify(logged_in_as=current_identity.username)
生成 JWT
你可以通过 create_access_token() 函数生成 JWT:
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)
user = authenticate(username, password)
if user:
access_token = create_access_token(identity=user.id)
return jsonify(access_token=access_token)
else:
return jsonify({"msg": "Bad username or password"}), 401
典型生态项目
Flask-JWT-Extended
Flask-JWT-Extended 是 Flask-JWT 的一个扩展,提供了更多高级功能,如刷新令牌、令牌撤销、部分保护路由等。如果你需要更复杂的 JWT 功能,可以考虑使用 Flask-JWT-Extended。
Flask-Security
Flask-Security 是一个综合性的安全扩展,提供了用户认证、授权、密码加密等功能。它集成了 Flask-JWT,可以方便地为你的 Flask 应用添加安全特性。
通过以上内容,你应该能够快速上手并使用 Flask-JWT 来保护你的 Flask 应用。希望这篇教程对你有所帮助!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



