【问题标题】:Using flask-jwt-extended callbacks with flask-restful and create_app将 flask-jwt-extended 回调与 flask-restful 和 create_app 一起使用
【发布时间】:2018-08-08 22:02:31
【问题描述】:

我正在尝试使用 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 变量隐藏在函数内部,不能在装饰器的全局范围内使用。

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

【问题讨论】:

    标签: python flask jwt flask-restful flask-jwt-extended


    【解决方案1】:

    【讨论】:

    • 如果您在答案中添加代码 sn-p,我会接受。我不确定 jwt=... 是如何在扩展文件中初始化的
    • 这些链接是完整工作代码示例的一部分,您可以看到它是如何工作的。您还可以查看此链接 flask.pocoo.org/docs/0.12/patterns/appfactories,以获取有关此概念如何工作的更多文档。
    • 澄清一下,它不是在扩展文件中初始化的,而是在 create_app() 函数中初始化的。
    • 不幸的是,这个答案中的两个链接现在都死了
    【解决方案2】:

    我最终做的是将处理程序放入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:
            ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 2019-07-19
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多