我有一个特殊的情况,我们正在使用 Django 的 OAuth2 工具包。我需要使用 401(带有 json)而不是 403 禁止的错误令牌来回答请求。
在此提交之后,我设法将此更改为:
oauth2_provider/views/mixins.py
class ProtectedResourceMixin(OAuthLibMixin):
def dispatch(self, request, *args, **kwargs):
if request.method.upper() == "OPTIONS":
return super().dispatch(request, *args, **kwargs)
valid, r = self.verify_request(request)
if valid:
request.resource_owner = r.user
return super().dispatch(request, *args, **kwargs)
else:
request.oauth2_error = getattr(r, "oauth2_error", {})
print(str(self.request.oauth2_error['error']))
data= {
"errors": [
{
"message": str(self.request.oauth2_error['error'])
}
],
}
return HttpResponse(json.dumps(data,ensure_ascii=False),content_type="application/json; charset=utf-8",status= 401)
#return HttpResponseForbidden()
我的问题是,即使这个解决方案有效,它也是在库的实际文件上。我想在不修改库的情况下实现这一点。
据我了解,我应该能够创建自己的自定义 mixin,但我还没有找到这种实现的示例。
我没有使用 Django 休息框架。