Jam*_* MV 4 python flask jwt flask-jwt-extended
我想在调用 @jwt_required 时向令牌添加额外的验证。我想验证其中一项声明。我可以用 JWTManager 做到这一点吗?
目前我的代码只是调用:
jwt = JWTManager(app)
Run Code Online (Sandbox Code Playgroud)
我用以下方法装饰功能: @jwt_required
在我的头顶上,我倾向于创建一个自定义装饰器来包装jwt_required.
通过functools.wraps 文档,可以大致了解它的外观:
from functools import wraps
from flask_jwt_extended import jwt_required
from flask_jwt_extended.view_decorators import _decode_jwt_from_request
from flask_jwt_extended.exceptions import NoAuthorizationError
def custom_validator(view_function):
@wraps(view_function)
def wrapper(*args, **kwargs):
jwt_data = _decode_jwt_from_request(request_type='access')
# Do your custom validation here.
if (...):
authorized = True
else:
authorized = False
if not authorized:
raise NoAuthorizationError("Explanation goes here")
return view_function(*args, **kwargs)
return jwt_required(wrapper)
@app.route('/')
@custom_validator
def index():
return render_template('index.html')
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到 jwt_required 的源代码。
| 归档时间: |
|
| 查看次数: |
4055 次 |
| 最近记录: |