我已经尝试过阅读文档,尝试使用更改默认行为https://flask-jwt-extended.readthedocs.io/en/latest/changing_default_behavior.html来处理错误(链接显示如何处理过期的令牌),并在谷歌中搜索我能做的每一个关键字组合,但似乎没有人有关于这方面的示例。
我尝试使用@jwt.revoked_token_loader来处理RevokedTokenError,但它似乎不起作用,因为我像这样应用它
@jwt.revoked_token_loader
def revoked_token_response(revoked_token):
jwtkn = revoked_token['jti']
return jsonsify({
'msg': 'token {} already been revoked!'.format(jwtkn)
)}, 401实际上,我不知道处理过期令牌的链接上的示例是如何处理' expired _token‘参数的,这是不是像我上面对’revoked_token‘所做的自我声明??据我所知,'jti‘就像flask-jwt-extended包中的默认值,因为每当我不使用它时,我都会看到错误(在我的db中,它是不同的,但没有任何问题。
我尝试按照本教程进行操作,它在我这一边运行得很好(以及他的原始代码源代码),但是我看到这个在撤销令牌https://codeburst.io/jwt-authorization-in-flask-c63c1acf4eeb上也没有catch异常
我使用邮递员,如果基于教程链接,下面是我如何获得此链接的
i do login
i use the access token generated to access protected routes ('/secrets')
i do logout
i use again the access token generated to access protected routes在最后一个错误之后,我在服务器端得到以下错误(ide):
....flask_jwt_extended\utils.py", line 216, in verify_token_not_blacklisted
raise RevokedTokenError('Token has been revoked')
flask_jwt_extended.exceptions.RevokedTokenError: Token has been revoked
127.0.0.1 -- [02/Jul/2019 22:25:26] "GET /secrets HTTP/1.1" 500 -在postman中,我得到的是:
{
'message': 'Internal Server Error'
}我的目标是发送一个自定义的json响应,而不是“内部服务器错误”。
编辑:我不是编程或类似的专家,一个初学者,想要实践关于安全的web开发的python。我还不太明白装饰器在应用程序等方面是如何工作的,所以我不知道其他人是否会调整flask-jwt-extended包来解决这些问题。
发布于 2019-07-02 23:49:59
返回500错误通常是由于其他flask扩展中的bug以及如何与本机flask errorhandler交互而发生的。你可以在这里找到一堆关于它的讨论(https://github.com/vimalloc/flask-jwt-extended/issues/86),但是tl;dr版本是,如果使用Flask-Restul,你可能需要设置app.config['PROPAGATE_EXCEPTIONS'] = True,或者如果使用flask-restplus,你可能需要使用如下hack:
jwt = JWTManager(app)
api = Api()
jwt._set_error_handler_callbacks(api)如果这些都不能帮助您,请查看链接github问题,如果其中没有任何帮助,请在该问题中详细说明您的设置。
干杯。
https://stackoverflow.com/questions/56854900
复制相似问题