Изменить процедуру аутентификации - PullRequest
0 голосов
/ 11 ноября 2019

Я создаю проект и сначала собрал его, я использовал резак печенья https://cookiecutter -django.readthedocs.io / en / latest / .

Этот шаблонбыл полезен для меня, но сейчас я пытаюсь создать API для своего проекта, и у меня возникают некоторые проблемы с процедурой аутентификации.

Все работает нормально, но процесс представления аутентифицируется с помощью отправленного токенав шапке. Я имею в виду следующее представление:

class HelloView(APIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request):
        content = {'message': 'Hello, World!'}
        return Response(content)

Затем я просто отправляю http-запрос на соответствующий URL-адрес, отправляя токен, например:

http http://127.0.0.1:8000/api/hello/ 'Authorization: Token 8b59a60cd91c29f4e2a7be54fbd6d32c7bd57377'

Затем ответ Iget is:

{
"detail": "Authentication credentials were not provided."
}

Тогда, если я введу URL-адрес с помощью браузера, он скажет то же самое, если я ранее не вошел в систему администратора Django. По этой причине, я думаю, что в основном происходит некоторая проблема конфигурации в процедуре аутентификации. Я добавил следующие переменные в мои настройки:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
    'rest_framework.permissions.IsAuthenticated',
]
}

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

Мой последний вопрос: знаете ли вы, как изменить способ аутентификации при наличии класса разрешений?

1 Ответ

1 голос
/ 12 ноября 2019

Вы хотите, чтобы пользователь проходил аутентификацию с использованием токена. Поэтому вам нужно установить аутентификацию токена в настройках:

  "DEFAULT_AUTHENTICATION_CLASSES": (
        "rest_framework.authentication.TokenAuthentication",
        "rest_framework.authentication.SessionAuthentication",
        "rest_framework.authentication.BasicAuthentication",
    ),

Или, если вы хотите, чтобы только один просмотр использовал аутентификацию токена, а не по умолчанию для всех представлений, вы можете использовать переменную authentication_classes в вашемсмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...