как передать заголовок из представлений в аутентификации токена в DRF - PullRequest
0 голосов
/ 09 декабря 2018

В моем проекте django rest framework есть 2 приложения, а именно: «account» и «trello».Я использовал токен аутентификации DRF.Я аутентифицировал (подтвердил) и сгенерировал токен для пользователей, пытающихся войти в представления моего приложения «учетные записи».И для одного из представлений моего приложения 'trello' я установил authentication_classes = (TokenAuthentication,) и permission_classes = [IsAuthenticated, ]. Я также выполнил необходимые настройки для DEFAULT_AUTHENTICATION_CLASSES.

. Мой вопрос: как отправитьзаголовок с ключом токена, сгенерированным из моих представлений приложения «account», для представления, где требуется аутентификация пользователя, т.е. для представления в «trello»?

Я пробовал это следующим образом:

account / views.py:

import requests

myurl = "http://localhost:8000/trello/create/board/"

class LoginView(APIView):

permission_classes = [AllowAny]
serializer_class = UserLoginSerializer

def post(self, request, *args, **kwargs):
    data = request.data
    serializer = UserLoginSerializer(data=data, context={'request': request})
    serializer.is_valid(raise_exception=True)
    print(serializer.validated_data['user'])
    user = serializer.validated_data['user']
    print("user", user)
    token, created = Token.objects.get_or_create(user=user)
    requests.post(myurl, data=serializer.validated_data, headers={'Authorization': 'Token {}'.format(token)})
    # django_login(request, user)
    return Response({'token': token.key},
                    status=HTTP_200_OK)

trello / views.py:

Я на самом деле не знаю, как поймать данные здесь. Я пытался публиковать из просмотров учетной записи с помощью запросов Django.Я попытался использовать метод get здесь, но он не работает так, как я хочу.Я, наверное, ошибся, но кто-нибудь может это исправить?

1 Ответ

0 голосов
/ 09 декабря 2018

Возможно, вам не хватает потока аутентификации токена.Вот что происходит:

  1. Клиент запрашивает токен, используя логин и пароль
  2. Ваше представление login (или представление obtain-token, как я предпочитаю его называть) проверяетучетные данные пользователя представляются клиентом и выдают токен.Обратите внимание, что здесь вам не нужно выполнять вход в Django, все, что вам нужно сделать, это выдать токен
  3. . В запросах подзапроса клиенты добавляют токен в заголовок Auth, а класс DRF TokenAuthentication аутентифицируется (именно здесьпроисходит вход в систему) запроса и добавляет пользовательский объект в запрос
  4. Вуаля!все ваши запросы теперь проходят проверку подлинности, и вы можете добавить необходимые разрешения для ваших представлений (например, представление trello)
...