Вход в систему DJANGO REST не работает с JWT, если разрешение установлено на IsAuthenticated

В rest framework по умолчанию используется веб-аутентификация API

path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),

Однако после добавления аутентификации JWT и установки разрешения на IsAuthenticated вы больше не сможете использовать аутентификацию по умолчанию или встроенную аутентификацию API.

HTTP 401 Unauthorized
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
WWW-Authenticate: Bearer realm="api"

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

Я попытался войти в систему, но она все равно выдала мне сообщение об ошибке выше.

В настоящее время я создаю свой проект без фронт-энда или клиента, только API. Поэтому шаблоны по умолчанию или шаблоны, предоставляемые Django Rest Framework и самим Django - это то, что я использую в настоящее время

Есть ли способ решить эту проблему? Я знаю, что вы должны присоединить токен доступа к учетным данным для входа в систему, так как вы можете сделать это с помощью аутентификации по умолчанию rest?

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

'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',

Скриншоты для контекста:

Django Rest Framework с логином (показывает, что я еще не зарегистрирован)

Django Rest Default или встроенная страница входа

Установили ли вы аутентификационные_классы вашего rest framework следующим образом:

'REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework_simplejwt.authentication.JWTAuthentication',
    
]

Я не уверен, что это решит проблему, потому что я слышал от опытного разработчика Django, что система входа в Django и остальной фреймворк отличаются от пользовательской системы входа, которую мы пишем. В этом случае вам в любом случае придется подключать JWT-токен.

Вернуться на верх