内部服务器错误,而不是从Auth0引发AuthError响应

2024-04-25 22:00:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的酒瓶倒满了酒应用程序类型它包含了我所有的主要功能。我创造了一个服务器.py按照此处的说明归档:https://auth0.com/docs/quickstart/backend/python

在我的应用程序类型我从服务器导入AuthError文件,需要\u auth。然后我将@requires\u auth放在函数前面。你知道吗

当我有一个有效的jwt,它工作得很好。当jwt无效时,它将失败。失败是好事,因为请求不应该起作用。但是我从api得到的响应是“内部服务器错误”,而不是服务器.py文件。你知道吗

我有两个错误:

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作为对调用的响应,而不仅仅是我的内部服务器错误?你知道吗

谢谢!你知道吗


Tags: inpy服务器flaskrequestlibpackagesline
3条回答

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中包含这个处理程序,在这里您实际使用@requires_auth
请注意,要执行此操作,需要添加相关导入:

from auth import AuthError
from flask import jsonify

注意:为了能够从auth.py导入,您需要在同一目录中添加一个空文件__init__.py。你知道吗

Uou可以使用errorhandler显式地捕获这些错误,并基于它们返回一些显式json。你知道吗

尝试设置app.config[“PROPAGATE_EXCEPTIONS”] = True

相关问题 更多 >