【发布时间】:2021-07-10 19:09:27
【问题描述】:
我有一个 Django 中间件,用于验证 Firebase IDToken。
from rest_framework import exceptions
def process_request(request):
...
try:
decoded_token = auth.verify_id_token(id_token)
uid = decoded_token['uid']
except:
raise exceptions.NotAuthenticated(detail='not authenticated')
当验证失败时,auth 会引发异常,该异常会被 try except 块捕获。但不是引发 401/403 错误,而是由 NotAuthenticated 引发 500 Internal Server Error。
发生这种情况是因为 DRF Exceptions 的某些工作吗?
【问题讨论】:
-
确保 raise 发送的响应是 json 格式。您能否分享控制台日志中显示的确切错误消息,
-
exceptions.NotAuthenticated(detail='not authenticated') 将创建一个字符串对象,而不是您需要一个 json 对象,尝试使用 detail={"error": "not authenticated"}
标签: python django django-rest-framework http-error django-middleware