我有个烧瓶式app.py,其中包含我的所有主要功能。我已经按照此处的指示创建了一个server.py文件:https://auth0.com/docs/quickstart/backend/python
在服务器的app.py文件中,我导入AuthError和require_auth。然后,我将@requires_auth放在函数的前面。
当我有一个有效的jwt时,它可以很好地工作。当jwt无效时,它将失败。失败很好,因为请求不起作用。但是我从我的api获得的响应是“内部服务器错误”,而不是server.py文件中引发AuthError部分中的详细响应。
我遇到2个错误:
Traceback (most recent call last):
File "C:\Users\ME\code\server.py", line 88, in decorated
issuer="https://"+AUTH0_DOMAIN+"/"
File "C:\Users\ME\lib\site-packages\jose\jwt.py", line 150, in decode
options=defaults)
File "C:\Users\ME\lib\site-packages\jose\jwt.py", line 457, in _validate_claims
_validate_exp(claims, leeway=leeway)
File "C:\Users\ME\lib\site-packages\jose\jwt.py", line 299, in _validate_exp
raise ExpiredSignatureError('Signature has expired.')
jose.exceptions.ExpiredSignatureError: Signature has expired.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ME\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\ME\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\ME\lib\site-packages\flask_restful\__init__.py", line 480, in wrapper
resp = resource(*args, **kwargs)
File "C:\Users\ME\lib\site-packages\flask\views.py", line 88, in view
return self.dispatch_request(*args, **kwargs)
File "C:\Users\ME\lib\site-packages\flask_restful\__init__.py", line 595, in dispatch_request
resp = meth(*args, **kwargs)
File "C:\Users\ME\code\server.py", line 92, in decorated
"description": "token is expired"}, 401)
server.AuthError: ({'code': 'token_expired', 'description': 'token is expired'}, 401)
如何获取AuthError作为对电话的响应,而不仅仅是我的内部服务器错误?
谢谢!
答案 0 :(得分:1)
此特定教程在Auth0中存在问题,它指示您将错误处理程序包括在auth.py
中:
@app.errorhandler(AuthError)
def handle_auth_error(ex):
response = jsonify(ex.error)
response.status_code = ex.status_code
return response
相反,您必须在实际使用app.py
的{{1}}中包括此处理程序。
注意,这样做,您需要添加相关的导入:
@requires_auth
注意:要从from auth import AuthError
from flask import jsonify
导入,您需要在同一目录中添加一个空文件auth.py
。
答案 1 :(得分:0)
尝试设置app.config[“PROPAGATE_EXCEPTIONS”] = True
答案 2 :(得分:0)
Uou可能使用错误处理程序来显式捕获那些错误,并基于这些错误返回一些显式的json。