Как использовать django REST JWT авторизацию и аутентификацию в представлениях на основе классов
Я использую аутентификацию JWT. Я использую этот тип приложения авторизации.
Я пытаюсь понять, как использовать это в представлении.
Пример. Скажем, я хочу разрешить пользователю создавать утвержденное место, только если у него есть правильные разрешения. Что бы я добавил к этому представлению, чтобы получить доступ к пользователю?
Я знаю, что у Джанго request.user
но как мне это включить? Всегда ли он включен, а request.user равен нулю, если токен не передан в заголовок? Или это промежуточное ПО? Проблема, с которой я столкнулся в конечном итоге, заключается в том, что к этому моменту много информации, но очень мало о том, как на самом деле использовать JWT в представлении.
пожалуйста помоги.
# for creating an approved venue add ons later
class CreateApprovedVenue(CreateAPIView):
queryset = Venue.objects.all()
serializer_class = VenueSerializer
jwt docs https://getblimp.github.io/django-rest-framework-jwt/
Документы о разрешениях остальных рамок http://www.django-rest-framework.org/api-guide/permissions/
поэтому я обнаружил этот ресурс и смотрю на него сейчас. https://code.tutsplus.com/tutorials/how-to-authenticate-with-jwt-in-django--cms-30460
Этот пример является светом затенения:
# users/views.py
class CreateUserAPIView(APIView):
# Allow any user (authenticated or not) to access this url
permission_classes = (AllowAny,)
def post(self, request):
user = request.data
serializer = UserSerializer(data=user)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
1 ответ
Чтобы использовать аутентификацию JWT, вам необходимо выполнить следующие шаги установки: https://getblimp.github.io/django-rest-framework-jwt/
Как только это будет сделано, вы можете включить аутентификацию, просто добавив authentication_classes
следующее
# for creating an approved venue add ons later
class CreateApprovedVenue(CreateAPIView):
authentication_classes = (JSONWebTokenAuthentication, )
queryset = Venue.objects.all()
serializer_class = VenueSerializer
И у вас есть пользователь, доступный для вас как request.user
во всех методах запроса. В случае с CreateAPIView
ты можешь сделать:
def post(self, request, *args, **kwargs):
user = request.user
...