1

我有一个特殊的情况,我们正在使用 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 休息框架。

4

0 回答 0