Я работаю над бэкэнд-приложением, которое предоставляет REST API на основе JSON. Тем не менее, я использую некоторую библиотеку, которая имеет некоторые собственные конечные точки, и они принимают данные, закодированные в форме. Я хочу расширить действия, выполняемые этими конечными точками, и раскрыть мои расширенные версии. В то же время я хочу, чтобы мой API был согласованным, и чтобы все мои конечные точки использовали JSON. Чтобы быть более точным c, я использую библиотеку 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, но это выглядит как излишнее убийство)
UPD : данные, необходимые для представления revoke_token
, находятся в request_body