微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask JWT:@jwt.token_in_blacklist_loader 从不调用

如何解决Flask JWT:@jwt.token_in_blacklist_loader 从不调用

我正在使用flask-jet-extended 构建一个应用程序,我正在从https://flask-jwt-extended.readthedocs.io/en/stable/blocklist_and_token_revoking/ 注销

我的问题是装饰器@jwt.token_in_blacklist_loader 似乎不起作用。我正在这样做:

@bp.route('/logout',methods=('GET','POST'))
@jwt_required
def logout():
    jti = get_raw_jwt()["jti"]
    insert_jti_in_blacklist(jti) # function that insert jti in my database
    return redirect(url_for('auth.login')) #redirect to login


@jwt.token_in_blacklist_loader
def check_if_token_revoked(jwt_header,jwt_payload):$
    print("check revoked token")
    jti = jwt_payload["jti"]
    return jti_in_blacklist(jti) #function return True if my jti is in blacklist

和我测试黑名单的功能

@bp.route('/account','POST'))
@jwt_required
def account() -> str:
    print(jti_in_blacklist(get_raw_jwt()["jti"]))

我正在做的是从我的应用程序注销,然后转到帐户 帐户中的打印功能按预期返回“True”(我的令牌在黑名单中) 但我从未进入 check_if_token_revoked(我没有控制台打印“检查撤销的令牌)

那为什么不叫它呢?通常这正是这个装饰器的目标,我不明白为什么它不起作用

谢谢

解决方法

尝试将@jwt_required 改为@jwt_required(),解释here

,

感谢@igor,我在文档中发现我使用的是旧版本的 jwt-extended,其中需要将 JWT_BLACKLIST_ENABLED 设置为“True”

现在它可以正常工作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。