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),
]
Что я хочу сделать, это следующее
- Получить токен, который
obtain_jwt_token
генерирует - Если аутентификация прошла успешно, выполните некоторые дополнительные операции и верните токен пользователю.
Я чувствую себя потерянным в джунглях всей этой архитектуры 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