使用烧瓶 - jwt伸展回调,并带有烧瓶 - restful和create_app



我正在尝试使用烧瓶-JWT扩展为烧瓶API创建API令牌。我正在尝试初始化token_in_blacklist_loader,但无法找到正确的方法。

问题在于token_in_blacklist_loader被用作装饰器。它应该以以下方式使用:

@jwt.token_in_blacklist_loader
def check_if_token_in_blacklist(decrypted_token):
    jti = decrypted_token['jti']
    return jti in blacklist

^来自此处的文档

其中jwt定义为:

jwt = JWTManager(app)

但是,如果使用create_app模式,则jwt变量隐藏在函数内,并且不能在装饰器的全局范围中使用。

解决此问题的正确方法是什么?

我最终要做的就是将处理程序放在 create_app的内部,例如:

def create_app(name: str, settings_override: dict = {}):
    app = Flask(name, ...)
    ...
    jwt = JWTManager(app)
    @jwt.token_in_blacklist_loader
    def check_token_in_blacklist(token_dict: dict) -> bool:
        ...

JWTManager放在其他文件中,然后用 jwt.init_app函数初始化它

作为一个例子,请参见:

https://github.com/vimalloc/flask-jwt-extended/blob/master/master/examples/database_blacklist/extensions.py

https://github.com/vimalloc/flask-jwt-extended/blob/master/master/examples/database_blacklist/app.py.py

相关内容

  • 没有找到相关文章

最新更新