Вход в систему 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-токен.