Как использовать django REST JWT авторизацию и аутентификацию в представлениях на основе классов - PullRequest
0 голосов
/ 25 апреля 2018

Я использую аутентификацию JWT. Я использую этот тип приложения авторизации.

Я пытаюсь понять, как использовать это в представлении.

Пример. Скажем, я хочу разрешить пользователю создавать утвержденное место, только если у него есть правильные разрешения. Что бы я добавил к этому представлению, чтобы получить доступ к пользователю?

Я знаю, что у django 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 / апи-гид / разрешения /

поэтому я обнаружил этот ресурс и сейчас смотрю на него. 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 Ответ

0 голосов
/ 25 апреля 2018

Для использования аутентификации JWT необходимо выполнить следующие шаги установки: https://getblimp.github.io/django-rest-framework-jwt/#installation

Как только это будет сделано, вы можете включить аутентификацию, просто добавив 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
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...