我有一个工作的 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=test@myemail.com&password=test123" http://webhost.mywebsite.com:8080/api/login/