我正在开发一个公开基于 JSON 的 REST api 的后端应用程序。但是,我正在使用一些有自己的端点的库,它们接受表单结束编码的数据。我想扩展这些端点所做的操作并公开我的扩展版本。同时,我希望我的 API 保持一致,并且我希望我的所有端点都使用 JSON。更具体地说,我使用 oauth2_provider 库,并且我想在用户撤销令牌时注销用户。我还在考虑制作一个logout
句柄,该句柄需要Authorization
标头中的不记名令牌,并且会注销用户并撤销令牌。
我的第一个方法是围绕oauth2_toolkit
撤销令牌视图编写一个包装器视图,将用户注销到包装器视图中,然后调用实际的 revoke_token 视图。但是,我必须修改请求的主体,它是不可变的。
class Logout(View):
def get(self, request):
if request.user.is_authenticated:
logout(request)
# modify the .body attr of the request or create a new request here
RevokeTokenView.as_view(request)
我找不到克隆 Django 请求或修改它的方法。有没有办法做到这一点?(现在我正在考虑创建一个自定义的 oauthlib_backend_class,但感觉有点矫枉过正)
UPDrevoke_token
:视图需要的数据在request_body