我有一個可以工作的Django REST API後端。我以前使用會話身份驗證,但希望移動到基於令牌的跨多個服務器的擴展。我已經研究了幾天,現在還沒有找到解決問題的答案。我加入了djangorestframework,智威湯遜包到我的應用程序,但是當我嘗試驗證總是返回:用於Django REST的JSON Web令牌不會向用戶數據庫驗證
{"non_field_errors":["Unable to login with provided credentials."]}
我在智威湯遜包凡這個錯誤,並且可以按照後面的代碼通過認證過程中看到。我在auth過程中沒有看到任何錯誤。當我嘗試使用這些憑據創建用戶時,它說用戶已經存在,所以我知道它正在擊中正確的用戶表。我不確定爲什麼gets_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命令
curl -d "[email protected]&password=test123" http://webhost.mywebsite.com:8080/api/login/
您是否已將rest_framework_jwt添加到您的INSTALLED_APPS列表中? –
文檔中沒有任何內容說明它需要添加到INSTALLED_APPS。我只是說要將它添加到DEFAULT_AUTHENTICATION_CLASS – joed4no
將rest_framework_jwt添加到已安裝的應用程序。無論出於何種原因,他們都將這些文件留在了文檔中。 – user1042361