我正在尝试使用flask-jwt-extended为我的flask 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变量就隐藏在函数内部,不能用于装饰器的全局作用域。
解决这个问题的正确方法是什么?
发布于 2018-03-03 04:16:31
我最终所做的是将处理程序放在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:
...发布于 2018-03-01 11:27:55
将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
https://stackoverflow.com/questions/49039479
复制相似问题