我如何使用Flask and Flask_JWT_extended进行自定义JWT验证?

2024-09-29 20:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在调用@jwt_required时向令牌添加额外的验证。我想核实其中一个说法。我能和JWTManager一起做吗?在

目前我的代码只是调用:

jwt = JWTManager(app)

我用:@jwt_required修饰函数


Tags: 函数代码apprequiredjwt时向核实jwtmanager
2条回答

贴在你的另一个问题上,但我也会贴在这里,以防别人无意中发现。在

作者在这里。就其价值而言,flask jwt也不支持要求索赔(尽管它说有)。https://github.com/mattupstate/flask-jwt/issues/98

编辑:这是现在在烧瓶jwt扩展。https://github.com/vimalloc/flask-jwt-extended/issues/64#issuecomment-318800617

干杯

首先,我倾向于创建一个包装jwt_required的定制装饰器。在

通过the functools.wraps documentation可以大致了解一下它的外观:

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')

Here是您可以找到jwt\u所需的源代码的地方。在

相关问题 更多 >

    热门问题