我已经尝试阅读文档以及尝试更改默认行为https://flask-jwt-extended.readthedocs.io/en/latest/sharing_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 包中的默认值,因为每当我不使用它时我都会看到错误(在我的数据库中,它是不同的,但根本没有问题。
我尝试按照本教程进行操作,并且对我来说效果很好(以及他的原始代码源),但我发现这个在 Revoke Tokens https://codeburst.io/jwt-authorization-上也没有捕获异常在烧瓶中-c63c1acf4eeb
我使用邮递员,如果基于教程链接,这就是我得到这个的方法
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 -
在邮递员中,这就是我得到的:
{
'message': 'Internal Server Error'
}
我的目标是发送自定义 json 响应而不是“内部服务器错误”
编辑:我不是编程等方面的奇才,是一个想要练习 Python 安全 Web 开发的初学者。我还不太明白装饰器在应用程序等方面是如何工作的,所以我不知道其他人是否调整了 flask-jwt-extended 包来解决这些问题。