Django TokenAuthentication - расширение JWT receive_jwt_token

У меня есть приложение Django REST и аутентификация на основе токенов на основе Django REST framework JWT Auth

Позвольте мне сформулировать мою цель высокого уровня:

Моя цель - сгенерировать токен для пользователя, если он предоставит правильные учетные данные И ТОГДА после успешного входа в систему я хочу выполнить дополнительный набор операций. Для простоты, скажем, я хочу вывести "Hello" на консоль.

Прямо сейчас мой код выглядит так:

from rest_framework_jwt.views import obtain_jwt_token

urlpatterns = [
    url(r'^api-token-auth/', obtain_jwt_token),
]

Что я хочу сделать, это следующее

  1. Получить токен, который obtain_jwt_token генерирует
  2. Если аутентификация прошла успешно, выполните некоторые дополнительные операции и верните токен пользователю.

Я чувствую себя потерянным в джунглях всей этой архитектуры Django, связанной с классами аутентификации. Правильно ли я понимаю, что, если я использую сторонние пакеты, такие как Django JWT, у меня нет питания при входе в систему и нет возможности выполнять дополнительные операции после входа пользователя в систему? И если я хочу иметь больше возможностей при входе в систему, я должен выполнить всю работу, которую разработчики Django JWT сделали с нуля? Могу ли я как-то добавить некоторые операции на вершине Django JWT obtain_jwt_token?

1 ответ

Решение

obtain_jwt_token это просто ссылка на представление, и, как и в любом другом представлении, вы можете просто создать его подкласс и ссылаться на него

class MySpecialJWT(ObtainJSONWebToken):
    def post(self, request, *args, **kwargs):
        response = super().post(request, *args, **kwargs)
        # foo bar
        return response
Другие вопросы по тегам