У меня есть рабочий бэкэнд Django REST API. Раньше я использовал аутентификацию сеанса, но хотел бы перейти на токен на основе масштабирования на нескольких серверах. Я исследую это уже пару дней, и я не нашел ответа на свою проблему. Я добавил пакет djangorestframework-jwt в свое приложение, но когда я пытаюсь пройти аутентификацию, он всегда возвращает:
{"non_field_errors":["Unable to login with provided credentials."]}
Я вижу в пакете jwt, где находится эта ошибка, и могу проследить код обратно через процесс аутентификации. Я не вижу никаких ошибок в процессе авторизации. Когда я пытаюсь создать пользователя с этими учетными данными, он говорит, что пользователь уже существует, поэтому я знаю, что он попадает в правильную таблицу пользователей. Я не уверен, почему конечная точка get_jwt_token не будет аутентифицировать мои учетные данные. Ниже приведены соответствующие разделы моего приложения django. Любая помощь будет принята с благодарностью. Если я упускаю что-то, что могло бы помочь разобраться в этом, пожалуйста, дайте мне знать, и я загружу это. Спасибо,
приложение/settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 100,}
приложение/urls.py
urlpatterns = patterns('',
# Api
url(r'^api/', include(router.urls)),
url(r'^api/stats', statsviews.StatsView.as_view()),
url(r'^api/testing', statsviews.TestView.as_view()),
url(r'^api/login', 'rest_framework_jwt.views.obtain_jwt_token'),
url(r'^api/logout', logout, {'next_page': '/api/login'}),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
)
команда скручивания
curl -d "[email protected]&password=test123" http://webhost.mywebsite.com:8080/api/login/
manage.py
? Если это так, посмотрите, как их пароль хранится в admin по сравнению с паролем вашего пользовательского пользователя. Если пароль вашего пользовательского пользователя не был хэширован, попробуйте скопировать пароль от вашего суперпользователя второму пользователю. Теперь попробуйте получить токен для пользовательского пользователя, используя пароль вашего суперпользователя. - person Jad S   schedule 17.01.2017