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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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

其中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

以上是关于使用flask-jwt-extended回调与flask-restful和create_app的主要内容,如果未能解决你的问题,请参考以下文章

存储来自回调 (FLTK) 的 Fl:Button 值

使用 flask-jwt-extended + ariadne (graphql) + react 设置身份验证/授权

flask-jwt-extended:自定义错误消息

VS 2015 和 FLTK 回调问题

get_jwt_identity() 在 Flask-JWT-Extended 中返回 None

flask-jwt-extended 库中的黑名单是不是有宽限期?