2017-02-21 4 views
0

У меня есть приложение Django REST и проверки подлинности маркеров на питание от Django REST framework JWT AuthДжанго TokenAuthentication - расширение JWT obtain_jwt_token

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

Моя цель заключается в создании маркера для пользователя, если он предоставляет правильные учетные данные И ТОГДА сразу после успешного входа в систему я хочу выполнить некоторый дополнительный набор операций. Для простоты предположим, что я хочу напечатать «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's 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 
+0

@EdgarNavasardyan - Их 'JSONWebTokenAPIView' все еще использует [' Post'] (HTTPS : //github.com/GetBlimp/django-rest-framework-jwt/blob/master/rest_framework_jwt/views.py#L53), поэтому просто позвоните супер, чтобы позволить им делать свою работу, затем разверните по мере необходимости – Sayse

+1

Вы сделали мой день –