Django REST的JSON Web令牌赢得';无法对用户数据库进行身份验证

Django REST的JSON Web令牌赢得';无法对用户数据库进行身份验证,django,django-rest-framework,jwt,django-rest-auth,Django,Django Rest Framework,Jwt,Django Rest Auth,我有一个工作的Django REST API后端。我以前使用的是会话身份验证,但现在想使用基于令牌的身份验证,以便跨多个服务器进行扩展。我已经研究了几天了,我还没有找到我的问题的答案。我将djangorestframework jwt包添加到我的应用程序中,但当我尝试进行身份验证时,总是返回: {"non_field_errors":["Unable to login with provided credentials."]} 我在jwt包中看到了这个错误,并且可以通过身份验证过程跟踪代码。在

我有一个工作的Django REST API后端。我以前使用的是会话身份验证,但现在想使用基于令牌的身份验证,以便跨多个服务器进行扩展。我已经研究了几天了,我还没有找到我的问题的答案。我将djangorestframework jwt包添加到我的应用程序中,但当我尝试进行身份验证时,总是返回:

{"non_field_errors":["Unable to login with provided credentials."]}
我在jwt包中看到了这个错误,并且可以通过身份验证过程跟踪代码。在验证过程中我没有看到任何错误。当我尝试创建一个具有这些凭据的用户时,它会说一个用户已经存在,因此我知道它正在命中正确的用户表。我不确定为什么获取jwt令牌端点不会验证我的凭据。下面是我的django应用程序的相关部分。任何帮助都将不胜感激。如果我遗漏了任何可以帮助解决这个问题的东西,请让我知道,我会上传它。谢谢

app/settings.py app/url.py curl命令
我有一个与你非常相似的设置。一个简单的应用程序,利用vanilla DRF JWT身份验证。唯一不同的是,我的已安装应用程序列表中包含了rest\u framework\u jwt:

INSTALLED_APPS = (
    ...
    # Third Party Dependencies
    'rest_framework',
    'rest_framework_jwt',
    'corsheaders',
    ....

试着添加它,看看它能给你带来什么。

我也遇到了同样的问题,最终找到了解决办法

遵循快速入门指南(),使用
python manage.py migrate
创建表结构;使用
python manage.py createsuperuser
创建名为admin的初始用户,密码为“password123”;(注意:指南中的密码不匹配)

现在应该没事了

$ curl -X POST -d "username=admin&password=password123" http://127.0.0.1:8000/api-token-auth/
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwidXNlcl9pZCI6MiwiZW1haWwiOiJhZG1pbkA3amdvLmNvbSIsImV4cCI6MTQ3MDY0NjY4Mn0.Dg4KW5pHHJfuaRzjqHTu8kYIzkq8js9}

您是否已将rest_framework_jwt添加到已安装的_应用程序列表中?文档中没有说明需要将其添加到已安装的_应用程序中。我只是说将其添加到默认的\u身份验证\u类将rest\u框架\u jwt添加到您安装的应用程序中。无论出于什么原因,他们在文档中没有提到这个问题。@joed4no django rest jwt默认使用用户名登录,您似乎在使用电子邮件。我也有同样的问题,这与我的自定义用户模型如何存储密码有关。您能否使用通过
manage.py
创建的超级用户登录?如果是这样的话,看看他们的密码是如何存储在admin中的,而不是自定义用户的密码。如果自定义用户的密码没有散列,请尝试将超级用户的密码复制到第二个用户。现在,尝试使用超级用户的密码获取自定义用户的令牌。它在任何地方都不起作用,但为什么它不适用于使用API创建的用户?密码的存储方式相同。
curl -d "email=test@myemail.com&password=test123" http://webhost.mywebsite.com:8080/api/login/
INSTALLED_APPS = (
    ...
    # Third Party Dependencies
    'rest_framework',
    'rest_framework_jwt',
    'corsheaders',
    ....
$ curl -X POST -d "username=admin&password=password123" http://127.0.0.1:8000/api-token-auth/
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwidXNlcl9pZCI6MiwiZW1haWwiOiJhZG1pbkA3amdvLmNvbSIsImV4cCI6MTQ3MDY0NjY4Mn0.Dg4KW5pHHJfuaRzjqHTu8kYIzkq8js9}