jwt,token白名单过滤。从写中间件。生成token
以下是一个简单的示例,展示了如何在Python中使用JWT库和Flask框架创建一个简单的token生成和白名单过滤中间件。
首先,安装JWT库:
pip install pyjwt
然后,创建一个Flask应用并添加中间件:
import jwt
from flask import Flask, request
app = Flask(__name__)
# 假设这是你的白名单
WHITELIST = {'user1', 'user2'}
SECRET_KEY = 'your-secret-key'
def create_token(user_id):
return jwt.encode({'user_id': user_id}, SECRET_KEY, algorithm='HS256')
def verify_token(token):
try:
data = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return data.get('user_id')
except jwt.ExpiredSignatureError:
return False
except jwt.InvalidTokenError:
return False
def token_required(f):
def decorated(*args, **kwargs):
token = request.headers.get('token')
user_id = verify_token(token)
if user_id and user_id in WHITELIST:
return f(user_id, *args, **kwargs)
return {'message': 'Token is invalid or user is not in the white list'}, 401
return decorated
@app.route('/create-token/<user_id>', methods=['GET'])
def create_token_route(user_id):
return {'token': create_token(user_id)}, 200
@app.route('/protected', methods=['GET'])
@token_required
def protected_route(user_id):
return {'message': f'Hello, {user_id}!'}, 200
if __name__ == '__main__':
app.run(debug=True)
在这个例子中,create_token
函数负责生成一个新的token。verify_token
函数用于验证token的有效性。token_required
是一个装饰器,它会检查请求头中的token是否有效,如果在白名单内,它将调用原始视图函数。
运行这个Flask应用后,你可以通过访问/create-token/<user_id>
来为特定用户创建一个token,然后使用这个token通过/protected
路径访问受保护的资源。如果token无效或用户不在白名单中,将返回401错误。
评论已关闭