Flask-JWT-Auth 项目教程
flask-jwt-authjust testing some jwts项目地址:https://gitcode.com/gh_mirrors/fl/flask-jwt-auth
项目介绍
Flask-JWT-Auth 是一个基于 Flask 框架的 JSON Web Token (JWT) 认证扩展。该项目提供了一套简单易用的工具,帮助开发者快速实现 JWT 认证机制,确保 API 的安全性。通过 Flask-JWT-Auth,开发者可以轻松地为 Flask 应用添加用户认证功能,保护敏感的 API 路由。
项目快速启动
安装依赖
首先,克隆项目仓库并安装所需的依赖包:
git clone https://github.com/realpython/flask-jwt-auth.git
cd flask-jwt-auth
pip install -r requirements.txt
配置应用
在项目根目录下创建一个 config.py
文件,并添加以下配置:
import os
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'this is a secret'
启动应用
在项目根目录下创建一个 app.py
文件,并添加以下代码:
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
运行应用:
python app.py
访问 http://127.0.0.1:5000/
,你应该能看到 "Hello, World!" 的输出。
应用案例和最佳实践
用户认证
在 app.py
中添加用户认证功能:
from flask import jsonify, request
from functools import wraps
import jwt
def token_required(f):
@wraps(f)
def decorated(*args, **kwargs):
token = request.headers.get('Authorization')
if not token:
return jsonify({'message': 'Token is missing'}), 403
try:
data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])
except:
return jsonify({'message': 'Token is invalid'}), 403
return f(data, *args, **kwargs)
return decorated
@app.route('/protected')
@token_required
def protected(data):
return jsonify({'message': 'This is a protected route', 'data': data})
生成 JWT 令牌
在 app.py
中添加生成 JWT 令牌的逻辑:
@app.route('/login', methods=['POST'])
def login():
auth = request.json
if not auth or not auth.get('username') or not auth.get('password'):
return jsonify({'message': 'Could not verify'}), 401
# 这里应该有用户验证逻辑,例如查询数据库
if auth.get('username') == 'admin' and auth.get('password') == 'password':
token = jwt.encode({'username': auth.get('username')}, app.config['SECRET_KEY'], algorithm="HS256")
return jsonify({'token': token})
return jsonify({'message': 'Could not verify'}), 401
典型生态项目
Flask-JWT-Extended
Flask-JWT-Extended 是 Flask-JWT-Auth 的一个扩展,提供了更多高级功能,如刷新令牌、黑名单机制等。它可以帮助开发者更灵活地管理 JWT 认证流程。
Flask-Security
Flask-Security 是一个综合性的安全扩展,提供了用户认证、授权、密码加密等功能。它与 Flask-JWT-Auth 结合使用,可以构建一个完整的安全框架。
Flask-Login
Flask-Login 是一个专注于用户会话管理的扩展,它与 Flask-JWT-Auth 结合使用,可以实现基于会话的认证机制,适用于需要长期会话的应用场景。
通过这些生态项目的结合使用,开发者可以构建一个功能完善、安全可靠的 Flask 应用。
flask-jwt-authjust testing some jwts项目地址:https://gitcode.com/gh_mirrors/fl/flask-jwt-auth