使用flask-jwt-extended回调与flask-restful和create_app

智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述使用flask-jwt-extended回调与flask-restful和create_app相关的知识,希望能为你提供帮助。
我正在尝试使用flask-jwt-extended为我的烧瓶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

^ from the docs here
【使用flask-jwt-extended回调与flask-restful和create_app】其中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/examples/database_blacklist/extensions.py

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

    推荐阅读